Меню Рубрики

Удалить дубликаты строк в файле linux

bash. как удалить повторы строк в файле, не сортируя его?

использовал «sort -u», но необходимо избавиться от сортировки.

uniq myfile1.txt > myfile2.txt

те, раз тебе важна позиция, нужно оставлять первое вхождение повторяющейся строки? или какое?

«Filter adjacent matching lines »

без сортировки работать не будет.

ТС: видимо только awk/perl/sed -что ближе и понятней

и да, если файло большое – ОЗУ понадобится много 😉

прувом поделитесь? (в контексте задачи)

по сабжу: eddie -mData.List unlines.nub.lines

[code=awk] # remove duplicate, nonconsecutive lines awk ‘! a[$0]++’ # most concise script awk ‘!($0 in a) ‘ # most efficient script [/code]

Источник

Удаляем дубликаты строк из файла средствами 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 строк. *-ой пометил те комбинации которые необходимо удалить!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Оглавление

  • Удаление повторяющихся строк (Bash или awk), madskull, 13:55 , 15-Ноя-06, (1)
    • Удаление повторяющихся строк (Bash или awk), SerVnk, 14:36 , 15-Ноя-06, (2)
      • Удаление повторяющихся строк (Bash или awk), perece, 15:36 , 15-Ноя-06, (3)
        • Удаление повторяющихся строк (Bash или awk), SerVnk, 20:31 , 15-Ноя-06, (4)

>Подскажите алгоритм!
>Необходимо при помощи команд bash или awk удалить повторяющиеся сочетания в файле
>след. вида:
>39111 39112
>39111 39114
>39111 39123
>39112 39111 *
>39112 39113
>39113 39112 *
>.
>39123 39111 *
>
>файл может быть до 100 строк. *-ой пометил те комбинации которые необходимо
>удалить!

sort -u
или
sort | uniq

1. “Удаление повторяющихся строк (Bash или awk)”
Сообщение от madskull (ok) on 15-Ноя-06, 13:55
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. “Удаление повторяющихся строк (Bash или awk)”
Сообщение от SerVnk (ok) on 15-Ноя-06, 14:36

>>Подскажите алгоритм!
>>Необходимо при помощи команд bash или awk удалить повторяющиеся сочетания в файле
>>след. вида:
>>39111 39112
>>39111 39114
>>39111 39123
>>39112 39111 *
>>39112 39113
>>39113 39112 *
>>.
>>39123 39111 *
>>
>>файл может быть до 100 строк. *-ой пометил те комбинации которые необходимо
>>удалить!
>
>sort -u
>или
>sort | uniq

sort -u удалит мне повторяющиеся строчки, а мне необходимо избавиться от повторных сочетаний. Например:
39111 39112
39112 39111
нужно удалить вторую строчку т.к. такое сочетание цифр уже есть в первой строке

Источник

Объясните что лучше AWK или UNIQ в Linux (Удаления дублей с большего файла)?

Есть txt файл объем которого 107ГБ свободно на винте 109 ГБ.
Что лучше использовать чтобы быстро избавиться от дублей строк в текстовом файле.

Пробовал команду ” awk ‘!seen[$0]++’ text.txt ”
Начинало все красиво и очень быстро но спустя 15-17 часов я уже видел как оно все по строчке делает и уж очень начал тупить комп.

Смотрю в сторону uniq text.txt> text_new.txt
но не знаю на сколько оно будет лучше предыдущей команды.

Кто что сможет посоветовать ?

не выводите на экран результат и скорость вас приятно удивит 😉
awk и uniq примерно одинаковы по скорости

Я через sed и awk работаю с дампами базы данных, текстовый файл на 250 гиг. Время обработки – выделения конкретной таблицы и вырезания ее из текста – в общей сложности минут 5 после постановки задачи.

Источник

Популярные записи


Adblock
detector