【问题标题】:Keep lines with multiple matches from file grep保留文件 grep 中具有多个匹配项的行
【发布时间】:2021-06-25 16:39:33
【问题描述】:

我有两个文件:

query.txt

i1  
i2
i3  
i4

还有subject.txt

2   i1  i2  p
3   i2  i5  p
1   i3  i4  p
2   i3  i4  p
1   i5  i1  p
1   i4  i2  p

我需要从subject.txt 获取在subject.txt 的第2 和第3 列中有来自query.txt 的条目的行(以任何顺序),并且我想摆脱subject.txt 的行来自query.txt 的条目仅在subject.txt 的一列中。

所以我只想保留:

2   i1  i2  p
1   i3  i4  p
1   i4  i2  p

【问题讨论】:

    标签: command-line grep


    【解决方案1】:

    当您有基于列/字段的逻辑时, 是一个更好的工具:

    awk '
        NR == FNR {q[$1] = 1; next}
        $2 in q && $3 in q
    ' query.txt subject.txt
    

    【讨论】:

      最近更新 更多