【问题标题】:grep -f alternative sed?awk?grep -f 替代 sed?awk?
【发布时间】:2011-04-28 06:12:17
【问题描述】:
file1 = 95000
file2 = 4500000

我想从 file2 中过滤掉 file1 条目。

egrep -f file1 file2

需要很长时间才能完成。 有替代方案吗?赛德?怎么了?

谢谢

【问题讨论】:

    标签: sed awk grep


    【解决方案1】:

    当然,您可以使用awk。将file2 条目放入数组中。然后迭代file1,每次都在数组中找到这些条目。

    awk 'FNR==NR{a[$0];next}($0 in a)' file2 file1
    

    玩转这些选项以获得您想要的东西

    awk 'FNR==NR{a[$0];next}(!($0 in a))' file2 file1
    awk 'FNR==NR{a[$0];next}(!($0 in a))' file1 file2
    awk 'FNR==NR{a[$0];next}($0 in a)' file1 file2
    

    【讨论】:

    • 这会从file2中过滤掉file1吗?比如 egrep -vf file1 file2 ?
    【解决方案2】:

    我不认为grep -f 真的适用于这种大小的过滤器文件,因此某种数据库支持的解决方案可能是您最好的选择。

    您可以将这两个文件逐行加载到 SQLite 数据库中,然后执行一些简单的 SQL 操作,如下所示:

    SELECT line FROM file2
    EXCEPT
    SELECT line FROM file1
    

    然后把它们扔回去。您可以使用 SQLite 从命令行直接完成所有这些操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-03
      • 2017-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      • 2021-12-07
      • 1970-01-01
      相关资源
      最近更新 更多