使用每行awk输出作为grep模式

时间:2011-04-27 19:33:12

标签: awk grep

我想找到包含不同文件列中所有字符串的文件的每一行。

我试过了 grep "$(awk '{ print $1 }' file1.txt)" file2.txt
但这只是完整输出file2.txt。

我知道我之前已经使用我在本网站上找到的模式完成了这项工作,但我再也找不到这个问题了。

3 个答案:

答案 0 :(得分:8)

我在OP的评论中看到,问题可能不再是一个问题。但是,以下稍作修改将处理空行情况。只需添加一项检查以确保该行至少包含一个字段:

grep "$(awk '{if (NF > 0) print $1}' file1)" file2

如果带有模式的文件只是每行的一组模式,那么更简单的版本是:

grep -f file1 file2

这会导致grep使用file1中的行作为模式。

答案 1 :(得分:2)

当您拥有grep

时,无需使用awk
awk 'FNR==NR&&NF{a[$0];next}($1 in a)' file2 file1

答案 2 :(得分:0)

$(awk'{print $ 1}'file1.txt)| grep文字> file.txt