保留来自文件 grep 的多个匹配项的行

Keep lines with multiple matches from file grep

我有两个文件:

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 的行仅在 subject.txt.

的列之一中具有来自 query.txt 的条目

所以我只想保留:

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

当您拥有基于 column/field 的逻辑时, 是更好的工具:

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