在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Linux  網(wǎng)絡安全/ 怎么把awk的結(jié)果作為grep的pattern參數(shù)?

怎么把awk的結(jié)果作為grep的pattern參數(shù)?

例如

grep 20180906834424 test.log | awk '{print $2}' 

上邊的代碼會產(chǎn)生一個結(jié)果 , 如何把這個結(jié)果作為grep的參數(shù)重新搜索test.log文件?

grep 20180906834424 test.log | awk '{print $2}'  | xargs grep PATTERN test.log

結(jié)果,awk的結(jié)果總是被用作文件名.怎么才能當成PATTERN呢?

回答
編輯回答
悶騷型

xargs -I{}會將命令行build成一個類似于for循環(huán)的執(zhí)行過程,考慮使用拼接pattern的方式加快執(zhí)行過程,只grep一次。

grep 20180906834424 test.log | awk '{print $2}' | sort -u | sed ':a;N;$!ba;s/\n/|/g;s/\(.*\)/(\1)/' | grep -E -f - test.log

egrep相當于grep -E的別名,拼接成(regex1|regex2|regex3...)這種形式,走grep -E/egrep的方式,一把grep,而不是for循環(huán)反復grep同一個文件,你測試一下time的執(zhí)行時間對比下:

time grep # 后面那一串命令參數(shù)省略

對比下結(jié)果看看

2017年6月30日 08:54
編輯回答
萌小萌

用 xargs的選項-I指明需要將管道中的內(nèi)容填充到后續(xù)命令的具體哪個參數(shù)位。

grep 20180906834424 test.log | awk '{print $2}' | xargs -I {} grep {} test.log

應該是可以滿足你的需求的

2017年11月27日 12:25