我有一堆日志文件。我需要找出一个字符串在所有文件中出现了多少次。
grep -c string *
返回
...
file1:1
file2:0
file3:0
...
使用管道,我只能得到有一个或多个事件的文件:
grep -c string * | grep -v :0
...
file4:5
file5:1
file6:2
...
我如何才能得到只有合并计数?(如果它返回file4:5, file5:1, file6:2,我想返回8。)
我有一堆日志文件。我需要找出一个字符串在所有文件中出现了多少次。
grep -c string *
返回
...
file1:1
file2:0
file3:0
...
使用管道,我只能得到有一个或多个事件的文件:
grep -c string * | grep -v :0
...
file4:5
file5:1
file6:2
...
我如何才能得到只有合并计数?(如果它返回file4:5, file5:1, file6:2,我想返回8。)
当前回答
您可以使用简单的grep来有效地捕获出现的数量。我将使用-i选项来确保STRING/ STRING/ STRING被正确捕获。
给出文件名称的命令行:
grep -oci string * | grep -v :0
命令行,删除文件名,如果文件没有出现,则打印0:
grep -ochi string *
其他回答
而不是使用-c,只是将其管道到wc -l。
grep string * | wc -l
这将列出单行上的每个事件,然后计算行数。
但是,这将错过字符串在一行上出现2+次的实例。
cat * | grep -c string
您可以使用简单的grep来有效地捕获出现的数量。我将使用-i选项来确保STRING/ STRING/ STRING被正确捕获。
给出文件名称的命令行:
grep -oci string * | grep -v :0
命令行,删除文件名,如果文件没有出现,则打印0:
grep -ochi string *
grep -oh string * | wc -w
将计数在一行中多次出现
cat * | grep -c string
cat的一个罕见的有用应用。