awk:file.txt中与文件中的任何字符串匹配的行

时间:2013-05-02 20:03:18

标签: unix awk

我有两个单独的.txt文件:

list.txt,包含字符串列表:

string1
string2
string3

和entries.txt,包含7个字段的不同行

name field2 field3 field4 field6 string1 field8

我需要从entries.txt获取所有第7个字段为==的行到list.txt中的任何一行。

我知道grep,这是grep -F list.txt entries.txt,但我需要它专门用于第7个字段,所以我想使用awk。

所以它会像awk '$7==$(any string from list.txt)'

如何撰写$(any string from list.txt)部分?

1 个答案:

答案 0 :(得分:3)

尝试这个awk one-liner:

awk 'NR==FNR{a[$0];next}$7 in a' list.txt entries.txt

没有测试,但应该符合您的要求。

注意 $ 6或$ 7

你在问题​​中说,它应该是$7,所以我使用了$7。但看看你的例子,它似乎应该是$6?无论如何,你可以自己改变列索引。