1
У меня есть входной файл, как:Подсчитайте отдельные слова
com.a.b
com.c.d
com.a.b
com.e.f
com.e.f
com.e.f
И я хотел бы выход быть похожим:
com.a.b 2
com.c.d 1
com.e.f 3
У меня есть входной файл, как:Подсчитайте отдельные слова
com.a.b
com.c.d
com.a.b
com.e.f
com.e.f
com.e.f
И я хотел бы выход быть похожим:
com.a.b 2
com.c.d 1
com.e.f 3
Если вы не возражаете, небольшое изменение в учитывая выход, то традиционный подход с sort
и uniq
:
$ sort file | uniq -c
2 com.a.b
1 com.c.d
3 com.e.f
в противном случае нас е скриптовый язык, который имеет ассоциативные массивы, такие как awk
:
$ awk '{a[$0]++}END{for(k in a)print k,a[k]}' file
com.e.f 3
com.c.d 1
com.a.b 2
трубы в sort
для заказа:
$ awk '{a[$0]++}END{for(k in a)print k,a[k]}' file | sort
com.a.b 2
com.c.d 1
com.e.f 3
'сортировки файлов | uniq -c | awk '{print $ 2, $ 1}' 'также обеспечивает правильный вывод. – Swiss
@Swiss дал пример ввода, который также был бы хорошим решением, но это не большое общее решение, так как необходимо исправить количество полей на строку. –