在 bash 中从另一个文件中删除项目列表

在 bash 中从另一个文件中删除项目列表

从另一个文件(无序)中删除一个文件中所列出的项目的最有效方法是什么(不重复执行命令)?

可以通过以下方式轻松获取第二个文件中不匹配项目的列表

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)

相关内容