Bash:计算多个log.gz文件中特定字符串的出现次数

时间:2018-07-04 14:10:57

标签: bash

作为标题,我的文件夹中有几个相当大的log.gz文件。这些log.gz文件的大小每个约为4GB。

我对特定字符串(例如“ abcdfg”)的出现次数感兴趣。我可以在此处执行计数计算的bash命令是什么?

谢谢。

3 个答案:

答案 0 :(得分:1)

能否请您尝试以下操作,如果有帮助,请告诉我。

zgrep -c 'abcdef' *.gz

或者您可以提及文件的完整路径,然后在上面的代码中也使用*.gz

答案 1 :(得分:1)

您可以尝试使用此命令来计算.gz文件中pattern的出现次数。

gunzip -c *.gz | grep 'pattern' | wc -l

示例:

# Say there are 3 .gz files with these contents:
a.txt.gz
a1
b2
c3

b.txt.gz
b1
b2
c3

cat c.txt.gz
a3
b3
c4

$ gunzip -c *.gz | grep 'b' | wc -l
4

$ gunzip -c *.gz | grep 'c3' | wc -l
2

答案 2 :(得分:1)

您可以像这样与 GNU Parallel 并行计算它们:

parallel zgrep -c "STRING" ::: *.gz

然后将这些值总计为awk

parallel zgrep -c "STRING" ::: *.gz | awk '{t+=$1} END{print t+0}'