开发者

Using each line of awk output as grep pattern

开发者 https://www.devze.com 2023-02-28 22:57 出处:网络
I want to find every line of a file that contains any of the str开发者_StackOverflow社区ings held in a column of a different file.

I want to find every line of a file that contains any of the str开发者_StackOverflow社区ings held in a column of a different file.

I have tried

grep "$(awk '{ print $1 }' file1.txt)" file2.txt

but that just outputs file2.txt in its entirety.

I know I've done this before with a pattern I found on this site, but I can't find that question anymore.


I see in the OP's comment that maybe the question is no longer a question. However, the following slight modification will handle the blank line situation. Just add a check to make sure the line has at least one field:

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

And if the file with the patterns is simply a set of patterns per line, then a much simpler version of it is:

grep -f file1 file2

That causes grep to use the lines in file1 as the patterns.


THere is no need to use grep when you have awk

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


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

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号