Как экспортировать оригинальные уникальные значения с помощью awk - PullRequest
0 голосов
/ 11 сентября 2018

Эта команда отлично подходит для объединения дубликатов и выдачи только уникальных значений:

awk '!x[$0]++' filewithdupes > newfile

Однако я хочу сохранить оригинал уникальные значения.

Пример:

Если у меня есть простой набор значений в столбце CSV:

1
1
2
2
3

Приведенная выше команда выводит следующее:

1
2
3

Но я хочу:

3

Как я могу изменить эту команду на сохранить исходное уникальное значение?Или какая-то команда лучше подходит для того, что я пытаюсь сделать?

Ответы [ 3 ]

0 голосов
/ 11 сентября 2018

Не могли бы вы попробовать следующее.

awk 'FNR==NR{a[$0]++;next} a[$0]==1'  Input_file Input_file
0 голосов
/ 11 сентября 2018

, если ваш файл уже отсортирован, как в примере, самым простым будет

$ uniq -u file

3

, в противном случае алгоритм двойного сканирования

$ awk 'NR==FNR{a[$1]++; next} a[$1]==1' file{,}

3
0 голосов
/ 11 сентября 2018

Вы можете использовать это awk для печати записи, которая имеет только одно вхождение:

awk '{x[$0]++} END{for (i in x) if (x[i] == 1) print i}' filewithdupes

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