计算一个字符串在文件中的出现次数

dee*_*epu 1 grep sed awk text-processing

我有一个文件如下。

A      ctrl/bng/h2ert/scratch/TestAccountService.java
A      ctrl/bng/h2ert/scratch/TestAccount.java
A      ctrl/bng/h2ert/scratch/TestT.java
A      ctrl/bng/h2ert/scratch/TestAccountService.jpg
A      ctrl/bng/h2ert/scratch/TestService.txt
A      ctrl/bng/h2ert/scratch/TestAccountService.txt
Run Code Online (Sandbox Code Playgroud)

我想列出.java上面的所有文件名,比如

Total java file 4
Run Code Online (Sandbox Code Playgroud)

然后文件名

Kus*_*nda 7

$ grep -c '\.java$' file
3
Run Code Online (Sandbox Code Playgroud)

-c标志grep将使它在报告该模式匹配的输入行数。

该模式\.java$将匹配以.java.结尾的任何行。

$ name="file"
$ printf 'Total number of Java files in "%s":\t%d\n' "$name" "$( grep -c -- '\.java$' "$name" )"
Total number of Java files in "file":   3
Run Code Online (Sandbox Code Playgroud)

甚至只是(使用 GNUgrep或兼容):

$ grep -Hc '\.java$' file
file:3
Run Code Online (Sandbox Code Playgroud)

或者(仍然使用 GNU grep):

$ grep --label='Total java files in "file"' -Hc '\.java$' < file
Total java files in "file":3
Run Code Online (Sandbox Code Playgroud)