由awk的结果GREP

时间:2017-06-13 12:16:37

标签: bash awk grep

输出awk'{print $ 4}'是

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

我需要通过这些记录grep文件st.log。像awk '{print $4}' |xargs -i grep -w "pattern from awk" st.log之类的东西我不知道如何正确传递模式?

2 个答案:

答案 0 :(得分:0)

怎么样?
awk '{print $4}' | grep -F -f - st.log

Eric Renouf的信用,注意到-f -可以用于标准输入,而不是-f <(cat),注意:-f /dev/stdin也可以使用并避免启动新流程。

或接近提问输出

awk '{print $4}' | xargs -i grep -F {} st.log 

可能-w不是OP所需的选项,但是-F

grep --help
-F, --fixed-strings       PATTERN is a set of newline-separated strings
-w, --word-regexp         force PATTERN to match only whole words

-w将仅匹配包含完全模式

的行

实施例

grep -w . <<<a       # matches
grep -w . <<<ab      # doesn't match
grep -F . <<<a       # doesn't match
grep -F . <<<a.b     # matches

答案 1 :(得分:-2)

这些内容可能会有所帮助

How to process each line received as a result of grep command

awk '{print $4} | while read -r line; do 
    grep $line st.log
done