我有以下文件:
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)