如何将Unix uniq -c输出行首的出现次数移至行尾?
没问题,这有几个简单高效的Unix命令行工具方案,帮你把uniq -c输出里的计数从行首移到行尾:
方法1:用awk处理(最直观的字段操作)
awk天生擅长处理字段分割,刚好适配uniq -c的输出格式:
uniq -c your_input_file | awk '{count=$1; $1=""; print substr($0,2), count}'
- 原理:把第一个字段(计数)存到变量
count,然后清空第一个字段,用substr($0,2)去掉字段清空后开头多余的空格,最后打印作者字符串和计数。
方法2:用sed正则替换(简洁的文本匹配)
如果习惯用正则,sed的扩展正则可以快速完成替换:
uniq -c your_input_file | sed -E 's/^([0-9]+) (.*)/\2 \1/'
- 原理:
^([0-9]+)捕获行首的数字(计数),(.*)捕获后面所有内容(作者字符串),然后把两个捕获组调换位置,变成“作者字符串 计数”的格式。
示例效果
比如你的输入行:
4 Aabdel-Wahab S|Ahmad AK
经过上面任意一个命令处理后,会变成:
Aabdel-Wahab S|Ahmad AK 4
内容的提问来源于stack exchange,提问作者Andrej
相关产品推荐
相关产品推荐

