На момент написания этого вопроса моим лучшим решением было это:
… | { for i in 1 2 3; do read -r i; printf ' %s\n' "$i"; done;
sort | uniq -c | sort -n; }
Таким образом, вывод направляется в группу, которая читает три строки и печатает их с отступом в 8 пробелов (, что представляет собой объем пространства, используемого uniq -c
для хранения количества строк и разделительного пробела ), затем оставшаяся часть ввода этой группы перенаправляется на sort
и uniq
.
Думаю, я мог бы написать вышеописанное как сценарий оболочки где-нибудь, возможно, с числом строк в качестве аргумента, чтобы мне не приходилось -вводить его повторно для каждого такого использования.