如何调整sort、uniq统计结果格式:移除开头空格并将计数移至字符串右侧
解决字符串统计格式调整问题
你可以在现有命令链后面加上awk处理,就能轻松实现你想要的格式调整,完整命令如下:
cat * | sort | uniq -c | sort -nr | awk '{gsub(/^ +/, ""); print $2 "," $1}'
命令拆解说明:
- 前半部分
cat * | sort | uniq -c | sort -nr:保留了你原本的统计逻辑,完成字符串去重计数并按出现次数降序排列,输出是带前置空格的2 abc这类格式。 - 新增的
awk命令做了两件事:gsub(/^ +/, ""):用正则匹配行首的所有空格并替换为空,把2 abc转换成2 abc。print $2 "," $1:调换字段顺序,把第二个字段(目标字符串)放在前面,第一个字段(计数)放在后面,用逗号分隔,最终输出abc,2的格式。
如果你的字符串里包含空格(虽然你例子里都是单字符串),可以稍微调整awk命令,用sub去掉开头空格后,把计数后面的内容作为整体字符串:
cat * | sort | uniq -c | sort -nr | awk '{sub(/^ +/, ""); cnt=$1; $1=""; print substr($0,2) "," cnt}'
内容的提问来源于stack exchange,提问作者user8922816
相关产品推荐
相关产品推荐

