怎么把awk的结果作为grep的pattern参数?
例如
grep 20180906834424 test.log | awk '{print $2}'
上边的代码会产生一个结果 , 如何把这个结果作为grep的参数重新搜索test.log文件?
grep 20180906834424 test.log | awk '{print $2}' | xargs grep PATTERN test.log
结果,awk的结果总是被用作文件名.怎么才能当成PATTERN呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
用 xargs的选项-I指明需要将管道中的内容填充到后续命令的具体哪个参数位。
grep 20180906834424 test.log | awk '{print $2}' | xargs -I {} grep {} test.log
应该是可以满足你的需求的
xargs -I{}
会将命令行build成一个类似于for循环的执行过程,考虑使用拼接pattern的方式加快执行过程,只grep一次。egrep
相当于grep -E
的别名,拼接成(regex1|regex2|regex3...)
这种形式,走grep -E
/egrep
的方式,一把grep,而不是for循环反复grep同一个文件,你测试一下time
的执行时间对比下:对比下结果看看