有没有比以下命令更好的方法?
zgrep ABC test.tgz | grep DEF | grep GHI | ..
更好的意思是性能和易用性(即从内存中输入命令)
答案 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