【问题标题】:How could I compare two files and remove similar rows in them (bash script)我如何比较两个文件并删除其中的相似行(bash 脚本)
【发布时间】:2013-09-25 13:38:00
【问题描述】:

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

grep -v -i -f file1 file2> file3

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

谢谢各位!

【问题讨论】:

  • 欢迎来到 SO!如果您可以发布一些示例输入以及预期输出,那就太好了。让回答更容易

标签: bash


【解决方案1】:

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

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

这是process substitution

【讨论】:

    【解决方案2】:

    试试:

    grep -Fxvf file1 file2
    

    可从 grep 手册页切换含义。

    【讨论】:

      【解决方案3】:

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

      comm -13

      【讨论】:

        猜你喜欢
        • 2021-12-07
        • 2022-10-18
        • 1970-01-01
        • 1970-01-01
        • 2011-05-09
        • 1970-01-01
        • 2020-07-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多