快速grep压缩文件中的多个值

时间:2013-10-24 02:19:51

标签: linux bash shell awk grep

有没有比以下命令更好的方法?

zgrep ABC test.tgz | grep DEF | grep GHI | ..

更好的意思是性能和易用性(即从内存中输入命令)

3 个答案:

答案 0 :(得分:1)

我似乎你以任何顺序做了。

cat file
ABC
ABC DEF
ABC DEF GHI
ABC GHI DEF
DEF


zgrep ABC file | grep DEF | grep GHI
ABC DEF GHI
ABC GHI DEF

这可以这样做

awk '/ABC/ && /DEF/ && /GHI/' file # here patter can be in any order
ABC DEF GHI
ABC GHI DEF


awk '/ABC.*DEF.*GHI/' file  # here patterns need to be in that order.
or
grep "ABC.*DEF.*GHI" file
ABC DEF GHI


grep并不是好事,也不是任何顺序。

答案 1 :(得分:0)

在我的头脑中,我会说不。您正在从前一个grep的结果中获取结果,因此管道是执行此操作的最佳方式,而无需额外的代码会降低性能。

答案 2 :(得分:0)

这是一个sed one liner来做同样的事,应该比多个grep更快:

sed -n -e '/ABC/{/DEF/{/GHI/p;};}' file