簡體   English   中英

通過 awk 的結果進行 GREP

[英]GREP by result of awk

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我不知道如何正確傳遞模式?

怎么樣

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

可能是這些方面的東西是有幫助的

如何處理因grep命令而收到的每一行

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM