我正在尝试打击脚本,似乎我在问这个问题是错的,或者找不到一个精致的例子。
我正在拍摄两个有列表的文件。
file1
:
aa
bb
cc
dd
ee
ff
file2
:
bb
dd
ff
创建file3
= file1
行 - (file2
中file1
中任意点的匹配行
file3
:
aa
cc
ee
感谢您的帮助或指导。
答案 0 :(得分:3)
怎么样
fgrep -v -f file2 file1
答案 1 :(得分:1)
如果可以使用这些文件,可以使用:
comm -2 -3 <(sort file1) <(sort file2)
我认为描述你想要的东西的雄辩方式是相对补充或设定差异。实际上,wikipedia page for complment包含许多语言的代码示例,包括上面的解决方案,没有内联排序。
答案 2 :(得分:1)
如果file2
中的每一行都出现在file1
中,则相当容易:
sort file1 file2 | uniq -u
如果文件无法排序且您不知道上述条件是否为真(关于每一行),awk
可以这样做:
awk 'BEGIN { while ((getline line < "file2" > 0) {
f2[line]++
}
}
f2[$0] > 0 { print }' file1
注意:我不会将它用于非常大的file2
。