Быстрое устранение дублирующихся строк через несколько файлов

Ошибки ввода - вывода означают, что в стадии реализации существует некоторая потеря данных, что означает в значительной степени, что никакая информация относительно того конвейера не будет достоверной.

Я пропустил бы часть диагноза и рассмотрел бы спасательные сценарии данных.

6
11.09.2012, 15:11
2 ответа

Я не уверен, что понимаю Ваш вопрос, но Ваш код может быть оптимизирован к:

awk '!x{a[$0];next}; !($0 in a)' foo/file x=1 bar/file > tmp

(Ваш имел проблемы для пустых строк или строк, решающих к "0" в них, я думаю),

Если файлы отсортированы, Вы могли бы сделать:

comm -13 foo/file bar/file > tmp

Если они не (ksh93. zsh или синтаксис удара):

comm -13  <(sort foo/file) <(sort bar/file) > tmp

(не обязательно быстрее, чем awk решение)

Кроме того, особенно с GNU awk, можно получить лучшую производительность путем установки локали на C/POSIX:

LC_ALL=C awk ...
5
27.01.2020, 20:29
  • 1
    я использую Ваш comm -13 приблизьтесь теперь и существует значимая скорость.Спасибо! –  stefan 11.09.2012, 15:38

у меня было несколько файлов размером по несколько мегабайт каждый, и я попробовал это, что работает на меня:

sort *.csv | uniq -d 

Это даст вам дубликаты записей из вашего файла, а затем вы можете перенаправить вывод на один файл, чтобы получить дубликаты записи, и удаление -d даст вам все уникальные записи.

0
27.01.2020, 20:29

Теги

Похожие вопросы