计算多个文件中出现的次数
Counting number of occurrences in several files
我想检查字符“[”在具有相同扩展名的目录的所有文件中递归地出现的次数,例如*。C。我在 Unix 中使用 SO Solaris。
我尝试了其他帖子中给出的一些解决方案,唯一有效的是这个,因为有了这个 OS 我不能使用命令 grep -o
:
sed 's/[^x]//g' filename | tr -d '012' | wc -c
其中 x 是我要计算的出现次数。这个可以,但是不是递归的,有什么办法让它递归吗?
您可以从 find
获取递归列表并使用其 -exec
参数执行命令。
我建议:
find . -name '*.c' -exec cat {} \; | tr -c -d ']' | wc -c
tr
的 -c
参数意味着使用提供的字符串的反义词——即在这种情况下,匹配所有内容 但 ]
.
find 命令中的 .
表示在当前目录中搜索,但您也可以在那里提供任何其他目录名称。
我希望你已经安装了 nawk。那么你可以:
nawk '{a+=gsub(/\]/,"x")}END{print a}' /path/*
您可以自己编写一段代码。我建议您 运行 以下内容:
awk '{for (i=1;i<=NF;i++) if ($i=="[") n++} END{print n}' *.c
这将在当前目录的所有文件中搜索“[”并打印出现的次数。
我想检查字符“[”在具有相同扩展名的目录的所有文件中递归地出现的次数,例如*。C。我在 Unix 中使用 SO Solaris。
我尝试了其他帖子中给出的一些解决方案,唯一有效的是这个,因为有了这个 OS 我不能使用命令 grep -o
:
sed 's/[^x]//g' filename | tr -d '012' | wc -c
其中 x 是我要计算的出现次数。这个可以,但是不是递归的,有什么办法让它递归吗?
您可以从 find
获取递归列表并使用其 -exec
参数执行命令。
我建议:
find . -name '*.c' -exec cat {} \; | tr -c -d ']' | wc -c
tr
的 -c
参数意味着使用提供的字符串的反义词——即在这种情况下,匹配所有内容 但 ]
.
find 命令中的 .
表示在当前目录中搜索,但您也可以在那里提供任何其他目录名称。
我希望你已经安装了 nawk。那么你可以:
nawk '{a+=gsub(/\]/,"x")}END{print a}' /path/*
您可以自己编写一段代码。我建议您 运行 以下内容:
awk '{for (i=1;i<=NF;i++) if ($i=="[") n++} END{print n}' *.c
这将在当前目录的所有文件中搜索“[”并打印出现的次数。