如何使用 diff 从 a.txt 文件中获取缺失的行?

如何使用 diff 从 a.txt 文件中获取缺失的行?

我有以下文件:

a.txt

1
2
11
22
33
444

b.txt

1
2
3
11
22
33
555

我想从 a.txt 中检索 b.txt 中不存在的行。

我尝试过:

diff a.txt b.txt -d
2a3
> 3
6c7
< 444
---
> 555

但我希望输出是

444

仅有的。有没有办法在 diff 上放置某种过滤器?

答案1

最好使用grep

grep -f b.txt -v a.txt

-f将定义b.txt为要搜索的模式列表a.txt。键将从未找到模式的位置-v反转搜索和打印输出行。a.txt

答案2

diff可能是错误的工具,请grep改用:

grep -vxf b.txt a.txt

a.txt即从不存在的任何行中获取b.txt

或者,comm可以通过抑制第二个文件中的行来工作:

comm -23 <(sort a.txt) <(sort b.txt)

相关内容