Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Найти/удалить дубликаты в txt файле  (Прочитано 919 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 473
    • Просмотр профиля
Найти/удалить дубликаты в txt файле
« : 02 Августа 2017, 10:05:27 »
Здравствуйте.

Есть txt файл, в нем существуют дубликаты строк.
пишу 
cat spisok.txt | wc -lполучаю
1514пишу
cat spisok.txt | sort -u |wc -lполучаю
1270Т.е. явно все что не уникальное это дубликаты.

А как найти все дубликаты? Какой ключ? В идеале дубликаты из файла нужно просто удалить.
Спасибо.
« Последнее редактирование: 02 Августа 2017, 11:07:44 от Azure »

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: Найти/удалить дубликаты в txt файле
« Ответ #1 : 02 Августа 2017, 10:30:17 »
Найти:
sort spisok.txt | uniq -d
Удалить:
s="$(awk '!seen[$0]++' spisok.txt)"; echo "$s" > spisok.txt

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 473
    • Просмотр профиля
Re: Найти/удалить дубликаты в txt файле
« Ответ #2 : 02 Августа 2017, 10:36:59 »
renzrv, взлетело. Спасибо.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Найти/удалить дубликаты в txt файле
« Ответ #3 : 02 Августа 2017, 11:02:08 »
echo "$s"
Вы серьезно???
Код: (bash) [Выделить]
awk '!seen[$0]++' spisok.txt > tmp ; mv -f tmp spisok.txt
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: Найти/удалить дубликаты в txt файле
« Ответ #4 : 02 Августа 2017, 11:12:25 »
Azure,
Серьезно. Загружал в переменную текста на 50 Мб, и все ок! Ниразу не завис.

 

Страница сгенерирована за 0.044 секунд. Запросов: 23.