0

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

grep -v -i -f file1 file2> file3

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

谢谢各位!

4

3 回答 3

1

您可以即时将制表符转换为空格:

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

这是过程替换

于 2013-09-24T13:00:47.970 回答
0

尝试:

grep -Fxvf file1 file2

可从 grep 手册页切换含义。

于 2013-09-24T12:57:57.333 回答
0

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

comm -13 <(cat file1 | tr '\t' ' ' | sort) <(sort file2)

于 2013-09-25T05:38:00.373 回答