uniq - пропускает последние N символов / полей при сравнении строк - PullRequest
11 голосов
/ 13 февраля 2010

'man uniq' документирует опции -f = N и -s = N, которые заставляют uniq пропускать первые N полей / символов соответственно при сравнении строк, но как заставить uniq пропускать last N полей / символов?

Ответы [ 3 ]

15 голосов
/ 31 мая 2013

Если вы хотите сначала выполнить сортировку, а затем сохранить только одну строку для каждой уникальной комбинации полей, по которым вы сортируете, вы можете обойтись только с помощью утилиты unix sort.

В качестве примера рассмотрим следующий файл с именем some_data

a;c;4
a;b;9
a;b;6

Мы хотим отсортировать по первому и второму полям и оставить третье поле в покое, поэтому мы делаем устойчивую сортировку, например:

$ sort -k1,1 -k2,2 -t';' --stable some_data

, что дает

a;b;9
a;b;6
a;c;4

Теперь скажем, что мы хотели бы сохранить только уникальные комбинации первого и второго столбца. Тогда мы сделаем это:

$ sort -k1,1 -k2,2 -t';' --stable --unique some_data

что дает

a;b;9
a;c;4
14 голосов
/ 13 февраля 2010

сначала вам нужно будет отсортировать данные, если вы хотите использовать uniq

 sort file | rev | uniq -f 10 | rev
9 голосов
/ 13 февраля 2010

rev $ filename | сортировать | uniq -f = N | ред

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...