有没有比以下命令更好的方法?
zgrep ABC test.tgz | grep DEF | grep GHI | ..
更好是指性能和易用性(即从内存中键入命令)
我似乎认为你按任何顺序做一个和。
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
不适合做任何事情。
在我的头顶上,我会说不。您正在从前一个 grep 的结果中寻找结果,因此管道是执行此操作的最佳方法,无需额外的代码,这会降低性能。
这是一个 sed one liner 做同样的事情,应该比 multiple 更快grep
:
sed -n -e '/ABC/{/DEF/{/GHI/p;};}' file