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



我想找到文件中包含不同文件列中保存的任何字符串的每一行。

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

我知道我以前在这个网站上找到过一个模式,但是我再也找不到那个问题了。

我在OP的评论中看到,也许这个问题不再是一个问题。但是,下面的稍微修改将处理空行情况。只需添加一个检查以确保该行至少有一个字段:

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

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

grep -f file1 file2

使grep使用file1中的行作为模式。

当你有awk时,没有必要使用grep

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

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

最新更新