从另一个文件(无序)中删除一个文件中所列出的项目的最有效方法是什么(不重复执行命令)?
可以通过以下方式轻松获取第二个文件中不匹配项目的列表
cat first_file.txt second_file.txt | sort | uniq -u
但这也会包含第一个文件中的所有不匹配的项目...现在怎么办?
答案1
该awk
程序对每个文件进行一次遍历:
awk '
NR == FNR {f1[$0] = 1; next}
!($0 in f1)
' file1 file2
comm
对于这项工作很有用。它确实需要对输入文件进行排序:
# output lines unique to file2
comm -13 <(sort file1) <(sort file2)