我正在尝试找出输入文件中英文字母表中每个字母出现的频率。我如何在bash脚本中做到这一点?
发布于 2010-10-19 17:21:38
只有一条awk命令
awk -vFS="" '{for(i=1;i<=NF;i++)w[$i]++}END{for(i in w) print i,w[i]}' file如果希望不区分大小写,请添加tolower()
awk -vFS="" '{for(i=1;i<=NF;i++)w[tolower($i)]++}END{for(i in w) print i,w[i]}' file如果你只想要字符,
awk -vFS="" '{for(i=1;i<=NF;i++){ if($i~/[a-zA-Z]/) { w[tolower($i)]++} } }END{for(i in w) print i,w[i]}' file如果您只需要数字,请将/[a-zA-Z]/更改为/[0-9]/
如果不想显示unicode,请使用export LC_ALL=C
发布于 2010-10-19 20:03:10
我的解决方案是使用grep、sort和uniq。
grep -o . file | sort | uniq -c忽略大小写:
grep -o . file | sort -f | uniq -ic发布于 2010-10-19 17:28:59
基于sed、sort和uniq的解决方案
sed 's/\(.\)/\1\n/g' file | sort | uniq -c这将计算所有字符,而不仅仅是字母。您可以使用以下命令进行过滤:
sed 's/\(.\)/\1\n/g' file | grep '[A-Za-z]' | sort | uniq -c如果您想考虑大小写相同,只需添加一个翻译:
sed 's/\(.\)/\1\n/g' file | tr '[:upper:]' '[:lower:]' | grep '[a-z]' | sort | uniq -chttps://stackoverflow.com/questions/3966820
复制相似问题