1

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

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

更好是指性能和易用性(即从内存中键入命令)

4

3 回答 3

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不适合做任何事情。

于 2013-10-24T06:46:45.853 回答
0

在我的头顶上,我会说不。您正在从前一个 grep 的结果中寻找结果,因此管道是执行此操作的最佳方法,无需额外的代码,这会降低性能。

于 2013-10-24T02:56:44.410 回答
0

这是一个 sed one liner 做同样的事情,应该比 multiple 更快grep

sed -n -e '/ABC/{/DEF/{/GHI/p;};}' file
于 2013-10-24T07:01:28.337 回答