Скажем, у меня есть файл, который содержит:
A
A
A
B
CC
Я хочу иметь вывод, как это:
A 3
B 1
CC 1
text-processing
Cheng
источник
источник
uniq -c filename.txt | sed 's/[^0-9]*\\([0-9]\+\\) \\(.*\\)/\2 \1/'
sort | uniq
A \ A \ A \ B \ A \ CC
, вывод толькоuniq -c
что показывал,A 3
а потом показывалA 1
. Сортировка в первую очередь гарантирует, что все идентичные строки будут сгруппированы вместеЯ только что пришел сюда с похожей проблемой. Из этого мне удалось собрать немного более продвинутую команду, которая, я надеюсь, будет полезна для других.
Как сказал Стивен Д. в комментариях выше,
uniq
подсчитываются только соседние повторяющиеся строки, поэтому сначала нужно отсортировать строки. После этого мы находим уникальные строки, затем сортируем их снова, поэтому наиболее часто встречающиеся строки находятся сверху.Вывод перенаправляется в файл
output.txt
. Если вы просто хотите просмотреть результаты в командной строке, удалите перенаправление и измените последнюю командуsort -n
таким образом, чтобы самая общая строка была внизу, то есть определенно все еще на экране.источник
cat file.txt | sort
простоsort file.txt
. :)cat
то более интересным. Так как, вы знаете, нетcat
.< file.txt sort | uniq -c
. Это легко редактировать, и все же избегает ненужногоcat
.