计算grep结果

The*_*nis 5 bash sh

我是bash的新手,所以我很难做一些非常基本的事情.通过播放各种脚本,我发现以下脚本打印包含"单词"的行

for file in*; do
    cat $file | grep "word"
done
Run Code Online (Sandbox Code Playgroud)

执行以下操作:

for file in*; do
    cat $file | grep "word" | wc -l
done
Run Code Online (Sandbox Code Playgroud)

在每次迭代中都有打印结果"文字"出现在文件上多少次.

  • 我怎样才能为所有这些外观实现一个计数器,最后只是echo计数器?

我用了一个计数器,但它出现了0.

 let x+=cat $filename | grep "word"
Run Code Online (Sandbox Code Playgroud)

Joh*_*ica 5

你可以管道整个循环wc -l.

for file in *; do
    cat $file | grep "word"
done | wc -l
Run Code Online (Sandbox Code Playgroud)

这是无用用途.怎么样:

for file in *; do
    grep "word" "$file"
done | wc -l
Run Code Online (Sandbox Code Playgroud)

实际上,如果您立即传递所有文件名,则不需要整个循环grep.

grep "word" * | wc -l
Run Code Online (Sandbox Code Playgroud)

请注意,如果word在同一行显示多次,这些解决方案将只计算整行一次.如果要分别计算同一行出现次数,可以使用-o在单独的行上打印每个匹配项:

grep -o "word" * | wc -l
Run Code Online (Sandbox Code Playgroud)