我如何比较两个文件并删除其中的类似行(bash脚本)

时间:2013-09-24 12:54:07

标签: bash

我有两个列数相似的数据文件。我想将file2保存在另一个文件(file3)中,同时排除file1中已存在的行。

grep -v -i -f file1 file2> file3

但问题是file1中列之间的空间是“\ t”,而另一个中的列只是“”。因此,此命令行不起作用。 有什么建议??

谢谢大家!

3 个答案:

答案 0 :(得分:1)

您可以动态地将标签转换为空格:

grep -vif <(tr '\t' ' ' < file1) file2 > file3

这是process substitution

答案 1 :(得分:0)

尝试:

grep -Fxvf file1 file2

切换grep手册页中提供的含义。

答案 2 :(得分:0)

grep -v -f是有问题的,因为它在file1中搜索file2中的每一行。使用大文件需要很长时间。试试这个:

comm -13&lt;(cat file1 | tr'\ t'''| sort)&lt;(sort file2)