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

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

我有一个如下文件。

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

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

Total java file 4

然后是文件名

答案1

$ grep -c '\.java$' file
3

标志-ctogrep将使其报告输入中与模式匹配的行数。

该模式\.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

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

$ grep -Hc '\.java$' file
file:3

或者(仍然使用 GNU grep):

$ grep --label='Total java files in "file"' -Hc '\.java$' < file
Total java files in "file":3

答案2

仅供记录,一直以来经典的 awk:

awk '/\.java$/{++c}END{print "Total java files:" c}' file

如果您还想打印这些文件名,您可以更改{++c}{print;++c}.

答案3

perl -lne '$a += s/\.java$//}{print"Total java file $ARGV: ", $a||0' java_file

s///命令返回累积的替换次数,$a并在最后打印结果。该$a||0表达式用于在行尾找不到 .java 的情况。

perl -lne '$a += /\.java$/}{print"Total java file $ARGV: ", $a||0' java_file

这次我们进行无损测试来确定.java的存在。其余细节相同。

相关内容