命令行场景下如何统计文件中每个姓名的出现次数
姓名出现次数统计问题解决方案
报错原因
你编写的awk命令存在语法错误:awk内部不支持直接嵌套grep、wc这类shell命令并使用管道,同时这种循环调用外部命令的实现方式效率极低,完全没有必要。
解决方案
方案1:轻量组合命令(适合中小文件)
通过字符替换、排序、去重统计三步完成,写法简单易读:
tr ',' '\n' < Sample_Names.txt | sort | uniq -c | awk '{print $2,$1}'
方案2:纯awk实现(适合大文件,性能更高)
直接用awk的关联数组在内存中统计,不需要额外调用其他工具:
awk -F ',' '{for(i=1;i<=NF;i++) count[$i]++} END{for(name in count) print name, count[name]}' Sample_Names.txt
输出说明
两种方案都会保留姓名前后的原始空格,输出格式和要求的效果一致,输出结果顺序可能略有差异,若需要按姓名排序,可以在命令末尾加| sort。
内容的提问来源于stack exchange,提问作者Rob_Coder_1123
相关产品推荐
相关产品推荐

