【问题标题】:filter a file with other file in bash用bash中的其他文件过滤文件
【发布时间】:2013-08-04 14:27:50
【问题描述】:

我有一个带数字的文件,例如:

$cat file
31038467
32048169
33058564
34088662
35093964
31018168
31138061
31208369
31538163
31798862

和其他例如

$cat file2

31208369
33058564
34088662
31538163
31038467

然后我需要其他文件的行在第一个文件中但不在第二个文件中

cat $output
35093964
31018168
31138061
31798862
32048169

我的真实文件有 12'000.0000 行。

那我该怎么做呢?

【问题讨论】:

    标签: linux bash shell solaris sh


    【解决方案1】:

    grep -f file2 -v -F -x file1
    

    够了吗?

    注意1:请具体说明问题,如果实际问题是这样,您需要对其进行时间/内存优化。

    注意 2:删除 file2 中的所有空行。

    【讨论】:

    • 我只会添加-F 来将file2 解析为固定字符串而不是正则表达式。
    • 一个重要的警告:这也会部分匹配行。如果file2 包含foo 并且file1 包含foobar,则该行将被过滤。这可能不是故意的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 2020-10-16
    相关资源
    最近更新 更多