Linux и Windows: помощь админам и пользователям

Администрируем и настраиваем Windows, Linux.



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

Рубрика: Shell
Метки: |
Суббота, 20 сентября 2008 г.
Просмотров: 26913
Подписаться на комментарии по RSS

Вопрос. Мне необходимо отсортировать данные в лог файле, но в нем очень много дублированных строк. Как я могу удалить все дублированные линии из текстового файла под Linux.

Ответ. Вам необходимо использовать 2 команды шелл, перенаправив вывод одной в другую:

a] команда sort - сортирует строки в текстовом файле

b] uniq command - уведомляет или пропускает повторяющиеся строки

Удаляем дубликаты строк используя команды Sort и Uniq.

Используем следующий синтаксис:

sort {file-name} | uniq -u sort file.log | uniq -u

Например у нас есть файл garbage.txt:

this is a test
food that are killing you
wings of fire
we hope that the labor spent in creating this software
this is a test
unix ips as well as enjoy our blog

Введите следующую команду:

$ sort garbage.txt | uniq -u

Результат исполнения:

food that are killing you
unix ips as well as enjoy our blog
we hope that the labor spent in creating this software
wings of fire

Где,

  • -u : удаляет все дубликаты строк

Постовой

Интернет-магазин - в продаже зимние шины и литые диски для любых марок автомобилей.

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Комментариев: 4

  1. Такое тоже работает

    $ sort -u file.ext

  2. StanislavKomarov24 | 2011-10-26 в 14:29:03

    недорогие грузчики Одесса только тут

  3. некорректный ответ ведь судя по задаче ясно что нужно оставить первоначальные копии и удалить только оставшиеся повторения

  4. Сохранить первоначальные дубликаты можно таким макаром:

    $ cat garbage.txt | uniq -d > duplicates.txt

    ну а потом все склеять

    $ sort garbage.txt | uniq -u > myfile.txt

    $ cat myfile.txt duplicates.txt > withoutgarbage.txt

Оставьте комментарий!

Используйте нормальные имена.

Имя и сайт используются только при регистрации

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

(обязательно)