![计算保留标题的行数](https://linux22.com/image/10424/%E8%AE%A1%E7%AE%97%E4%BF%9D%E7%95%99%E6%A0%87%E9%A2%98%E7%9A%84%E8%A1%8C%E6%95%B0.png)
我通常用于计算某些文本输入中给定行出现次数的习惯用法是
… | sort | uniq -c | sort -n
最后一个sort -n
可选地用于按出现次数对行进行排序。然而,我最近遇到了一种情况,数据的前三行是标题,并且将它们包含在排序和计数中大大降低了可读性。
仅缩进输入的前三行(以考虑计数字段)而不对其进行排序的最优雅的方法是什么?
答案1
在写这个问题时,我最好的解决方案是:
… | { for i in 1 2 3; do read -r i; printf ' %s\n' "$i"; done;
sort | uniq -c | sort -n; }
uniq -c
因此,输出通过管道传输到一个组,该组读取三行并按 8 个空格缩进打印它们(这显示了用于保存行数和分隔空间的空间量),然后将该组的剩余输入转发到sort
和uniq
。
我想我可以将上面的内容写为 shell 脚本,也许可以将行数作为参数,这样我就不必为每次这样的使用重新输入它。