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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

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

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

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

  • Автор темы
  • Активист
  • *
  • Сообщений: 376
    • Просмотр профиля
Здравствуйте.

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

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

Оффлайн ReNzRv

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

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

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

Оффлайн Azure

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

Оффлайн ReNzRv

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

 

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