计算保留标题的行数

计算保留标题的行数

我通常用于计算某些文本输入中给定行出现次数的习惯用法是

… | 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 个空格缩进打印它们(这显示了用于保存行数和分隔空间的空间量),然后将该组的剩余输入转发到sortuniq

我想我可以将上面的内容写为 shell 脚本,也许可以将行数作为参数,这样我就不必为每次这样的使用重新输入它。

相关内容