laverka trip
laverka trip

Reputation: 21

Result of awk as search pattern for grep

here is a piece of log

21:36 b05808aa-c6ad-4d30-a334-198ff5726f7c new
22:21 59996d37-9008-4b3b-ab22-340955cb6019 new
21:12 2b41f358-ff6d-418c-a0d3-ac7151c03b78 new
12:36 7ac4995c-ff2c-4717-a2ac-e6870a5670f0 new

i print it by awk '{print $2}' st.log so i got

b05808aa-c6ad-4d30-a334-198ff5726f7c
59996d37-9008-4b3b-ab22-340955cb6019
2b41f358-ff6d-418c-a0d3-ac7151c03b78
7ac4995c-ff2c-4717-a2ac-e6870a5670f0

now i need to pass it to grep, in this manner

awk '{print $2}' |xargs -i grep -w "pattern from awk" st.log

I need exactly how to pass each founded record from awk to grep. I do not need other solutions, because my task is more complicated, than this piece. Thank you.

Upvotes: 1

Views: 116

Answers (3)

Thor
Thor

Reputation: 47229

No need for awk:

grep -Ff <(cut -d' ' -f2 log)

Upvotes: 1

janos
janos

Reputation: 124804

It seems you're looking for the replace string option:

   -I replace-str
          Replace occurrences of replace-str in the initial-arguments with
          names read from standard input.  Also, unquoted  blanks  do  not
          terminate  input  items;  instead  the  separator is the newline
          character.  Implies -x and -L 1.

Like this:

awk '{print $2}' | xargs -I{} grep -w {} st.log

Upvotes: 0

Cyrus
Cyrus

Reputation: 88939

With bash and grep:

grep -f <(awk '{print $2}' piece_of_log) st.log

Upvotes: 1

Related Questions