bash. как удалить повторы строк в файле, не сортируя его?
использовал «sort -u», но необходимо избавиться от сортировки.
uniq myfile1.txt > myfile2.txt
те, раз тебе важна позиция, нужно оставлять первое вхождение повторяющейся строки? или какое?
«Filter adjacent matching lines »
без сортировки работать не будет.
ТС: видимо только awk/perl/sed -что ближе и понятней
и да, если файло большое — ОЗУ понадобится много 😉
прувом поделитесь? (в контексте задачи)
по сабжу: eddie -mData.List unlines.nub.lines
Удаляем дубликаты строк из файла средствами Linux
Как средствами Linux удалить дубликаты строк из текстового файла? Удаление дубликатов строк из текстового файла средствами ОС Linux не составляет особого труда, для этого нам достаточно стандартных программ sort и uniq.
К примеру у нас имеется текстовый файл garbage.txt с содержимым:
Стандартные утилиты sort и uniq помогут нам отсортировать строки и выбрать только уникальные:
Результат мы можем вывести в файл:
Рекомендуемый контент
А тут же ж мог быть рекомендуемый контент от гугла 🙂 Для отображения рекомендуемого контента необходимо в браузере разрешить выполнение JavaScript скриптов, включая скрипты с доменов googlesyndication.com и doubleclick.net
Вы не любите рекламу!? Напрасно!:) На нашем сайте она вовсе ненавязчивая, а потому для нашего сайта можете полностью отключить AdBlock (uBlock/uBlock Origin/NoScript) и прочие блокировщики рекламы! AdBlock/uBlock может препятствовать нормальной работе системы поиска по сайту, отображению рекомендуемого контента и прочих сервисов Google. Рекомендуем полностью отключить блокировщик рекламы и скриптов, а также разрешить фреймы (aka iframe).
unixforum.org
Форум для пользователей UNIX-подобных систем
[РЕШЕНО] Удалить повторяющиеся строки
Модератор: /dev/random
[РЕШЕНО] Удалить повторяющиеся строки
Сообщение newsrc » 08.06.2014 13:02
Re: [РЕШЕНО] Удалить повторяющиеся строки
Сообщение /dev/random » 08.06.2014 13:07
Если эти повторяющиеся строки всегда идут подряд, используйте uniq. Если нет — sort -u. Если во втором случае нужно, чтобы порядок строк сохранялся (sort, как ясно из имени, их отсортирует), то пронумеруйте строки, отсортируйте с удалением дублей без учёта номера (см. опцию -k), отсортируйте оставшиеся по номеру и удалите номера с помощью sed или cut.
PS: Варианты, что я перечислил, вычистят все повторы, а не только те строки, что повторяются более _двух_ раз. Но что-то мне подсказывает, что вы имели в виду более _одного_ раза.
Удалить дубликаты строк в файле linux
Удаление повторяющихся строк при помощи uniq
Повторяющие строки не часто становятся проблемой, но иногда это так. И когда это происходит, требуется дополнительная работа для их отфильтровки. Утилита uniq в этом деле очень полезна. Посмотрите, как вы можете сэкономить свое время и избежать головной боли.
После сортировки текстового файла вы можете заметить, что некоторые строки повторяются. Иногда эта повторяющаяся информация не нужна и может быть удалена для сохранения места на диске. Строки в файле не обязательно сортировать, но вы должны помнить, что uniq сравнивает строки по мере прочтения и удаляет только две или больше соседних строк. Следующие примеры показывают как это работает на практике:
Happy Birthday to You!
Happy Birthday to You!
Happy Birthday Dear Tux!
Happy Birthday to You!
Happy Birthday Dear Tux!
Happy Birthday to You!
Happy Birthday to You!
Happy Birthday to You!
$ sort happybirthday.txt | uniq
Happy Birthday Dear Tux!
Happy Birthday to You!
Помните, что это плохая идея — использовать uniq или другие утилиты для удаления повторяющихся строк в файлах, содержащих финансовую или другую важную информацию. В таких файлах повторяющиеся строки обозначают ещё один перевод денег на тот же счет и удаление их может привести к проблемам в отношениях с налоговыми органами. Не делайте этого!
Что, если вы хотите сделать свою работу проще и вывести только уникальные или только повторяющиеся строки из файла? Вы можете сделать это при помощи опций -u (unique) и -d (duplicate):
$ sort happybirthday.txt | uniq -u
Happy Birthday Dear Tux!
$ sort happybirthday.txt | uniq -d
Happy Birthday to You!
Вы можете также получить некоторую статистику при помощи опции -c:
$ sort happybirthday.txt | uniq -uc
1 Happy Birthday Dear Tux!
$ sort happybirthday.txt | uniq -dc
3 Happy Birthday to You!
Сравнение целых строк очень полезно, но это — не последняя возможность этой команды. Очень хороша возможность пропускать указанные при помощи опции -f поля. Это может пригодиться при просмотре системных логов. Использование простой uniq не будет работать, так как каждая строка имеет свою отметку времени. Но если вы укажете uniq пропустить все поля времени, то, неожиданно, ваш лог станет гораздо более понятным. Попробуйте uniq -f 3 /var/log/messages и убедитесь сами.
Есть еще одна опция -s, которая работает так же, как и -f, но пропускает указанное количество символов. Вы можете использовать -s и -f вместе. Сначала удалите поля, а затем символы. А что, если вы захотите увидеть строки, только с данными символами? Попробуйте опцию -w.
Удалить дубликаты строк в файле linux
Подскажите алгоритм!
Необходимо при помощи команд bash или awk удалить повторяющиеся сочетания в файле след. вида:
39111 39112
39111 39114
39111 39123
39112 39111 *
39112 39113
39113 39112 *
.
39123 39111 *
файл может быть до 100 строк. *-ой пометил те комбинации которые необходимо удалить!
Оглавление |
|
1. «Удаление повторяющихся строк (Bash или awk)» | |
Сообщение от madskull | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
2. «Удаление повторяющихся строк (Bash или awk)» | |
Сообщение от SerVnk | |
sort -u удалит мне повторяющиеся строчки, а мне необходимо избавиться от повторных сочетаний. Например: Объясните что лучше AWK или UNIQ в Linux (Удаления дублей с большего файла)?Есть txt файл объем которого 107ГБ свободно на винте 109 ГБ. Пробовал команду » awk ‘!seen[$0]++’ text.txt » Смотрю в сторону uniq text.txt> text_new.txt Кто что сможет посоветовать ? не выводите на экран результат и скорость вас приятно удивит 😉 Я через sed и awk работаю с дампами базы данных, текстовый файл на 250 гиг. Время обработки — выделения конкретной таблицы и вырезания ее из текста — в общей сложности минут 5 после постановки задачи. |