простой способ изменить вывод uniq -c?

У меня есть такой простой файл:

Термин1, столбец2, столбец3
Термин2, столбец2, столбец3
Термин3, столбец2, столбец3
Термин2, столбец2, столбец3
Термин1, столбец2, столбец3
Термин2, столбец2, столбец3

Если я отсортирую по первому столбцу и получу количество терминов:

cut -f1 -d ' ' file | sort | uniq -c

Результаты показывают мне следующее:

2 Термин1
3 Термин2
1 Термин3

Но я бы предпочел увидеть это:

Термин1 2
Термин2 3
Термин3 1

Есть ли простой способ «изменить» вывод uniq, чтобы сделать это, или мне все равно нужно будет передать вывод в sed или awk, чтобы получить это?

Это кажется простым вопросом, поэтому мои извинения, если это было задано раньше.


person Linda-Veronique    schedule 17.10.2017    source источник
comment
Пожалуйста, используйте теги кода для входных образцов, а не теги кавычек.   -  person RavinderSingh13    schedule 17.10.2017


Ответы (2)


Uniq не дает возможности изменить порядок вывода.

Вы можете сделать это, используя awk :

cut -f1 -d ' ' file | sort | uniq -c | awk '{print $2, $1}'

Term1 2
Term2 3
Term3 1

Или используйте awk, а затем отсортируйте (рекомендуется)

$awk '{a[$1]++} END{for (i in a) print i,a[i] }' file | sort -k1
Term1 2
Term2 3
Term3 1
person Rahul Verma    schedule 17.10.2017
comment
awk one-liner не гарантирует отсортированный вывод. (i in a) - person Kent; 17.10.2017
comment
-k1 является избыточным. - person karakfa; 17.10.2017
comment
@karakfa: Можете ли вы уточнить? - person Rahul Verma; 17.10.2017
comment
sort -k1 — это поведение по умолчанию для sort, нет необходимости указывать явно. Если вы не имели в виду -k1,1 - person karakfa; 17.10.2017
comment
@karakfa: О, хорошо. - person Rahul Verma; 17.10.2017

Самый короткий с инструментом GNU datamash:

datamash -Ws -g1 count 1 <file

Выход:

Term1   2
Term2   3
Term3   1
person RomanPerekhrest    schedule 17.10.2017