我有一堆日志文件。我需要找出一个字符串在所有文件中出现了多少次。
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。)
当前回答
AWK解决方案还处理包含冒号的文件名:
grep -c string * | sed -r 's/^.*://' | awk 'BEGIN{}{x+=$1}END{print x}'
请记住,此方法仍然不会在同一行上发现多次出现的字符串。
其他回答
cat * | grep -c string
grep -oh string * | wc -w
将计数在一行中多次出现
awk -v RS='' -v FPAT='fast' '{print NF,FILENAME}' <file1..N>
取一个字符串,使其为line look instance of fast,然后打印带有文件名的字段数。
cat * | grep -c string
cat的一个罕见的有用应用。
AWK解决方案还处理包含冒号的文件名:
grep -c string * | sed -r 's/^.*://' | awk 'BEGIN{}{x+=$1}END{print x}'
请记住,此方法仍然不会在同一行上发现多次出现的字符串。