У меня есть файл [csv] с перепечаткой дубликатов данных, т.е. одни и те же данные напечатаны дважды. Я попытался с помощью Uniq Сортировать по
по sort myfile.csv | uniq -u
однако нет никаких изменений в myfile.csv
, и я не пробовал , sudo sort myfile.csv | uniq -u
но никакой разницы.
Так что в настоящее время мой CSV-файл выглядит так
a
a
a
b
b
c
c
c
c
c
Я хотел бы выглядеть так
a
b
c
text-processing
files
3kstc
источник
источник
man sort
, вы не можете сортировать «на месте».Ответы:
Причина, по которой этот параметр
myfile.csv
не меняется, заключается в том, что-u
опция дляuniq
будет печатать только уникальные строки В этом файле все строки являются дубликатами, поэтому они не будут распечатаны.Однако, что более важно, выходные данные не будут сохранены,
myfile.csv
потому чтоuniq
будут просто распечатаныstdout
(в вашей консоли по умолчанию).Вам нужно будет сделать что-то вроде этого:
$ sort -u myfile.csv -o myfile.csv
Варианты означают:
-u
- сохранить только уникальные линии-o
- вывод в этот файл вместоstdout
Вы должны просмотреть
man sort
для получения дополнительной информации.источник
Как показал Белмин, сортировка отличная. Его ответ лучше всего подходит для несортированных данных, и его легко запомнить и использовать.
Тем не менее, он также является изменчивым, так как он меняет порядок ввода. Если вам абсолютно необходимо, чтобы данные проходили в том же порядке, но удалялись более поздние дубликаты, лучше использовать awk.
Странный крайний случай, но он время от времени всплывает.
Кроме того, если ваши данные уже отсортированы, когда вы на них нажимаете, вы можете просто запустить uniq.
Недостатком обоих моих предложений является то, что вам нужно использовать временный файл и скопировать его обратно.
источник
uniq
-u
печатает только уникальные строки. Ваш ввод не имеет уникальных строк, поэтомуuniq -u
ничего не печатать. Вам нужно толькоsort
:источник
Если вы хотите сохранить порядок файлов (не отсортирован), но по-прежнему удалять дубликаты, вы также можете сделать это
Например
Будет выводить
источник