Как удалить дубликаты строк в файле?
Рубрика: Shell
Метки: shell | команды Linux
Суббота, 20 сентября 2008 г.
Просмотров: 26684
Подписаться на комментарии по RSS
Метки: shell | команды Linux
Суббота, 20 сентября 2008 г.
Просмотров: 26684
Подписаться на комментарии по 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 : удаляет все дубликаты строк
Постовой
Интернет-магазин - в продаже зимние шины и литые диски для любых марок автомобилей.
Еще записи по теме
- Включаем автоматический вход в Ubuntu 9.10
- 10 базовых основ Linux применимых к управлению VMware ESX
- BASH Shell: перенаправляем вывод и ошибки в /dev/null
- Удаленное добавление службы SNMP в Windows 7
- Добавление DNS серверов с помощью DNS-add
- Iptables - ограничение количества подключений с IP
- Alias - создаем алиасы для ваших команд
Комментариев: 4
Такое тоже работает
$ sort -u file.ext
недорогие грузчики Одесса только тут
некорректный ответ ведь судя по задаче ясно что нужно оставить первоначальные копии и удалить только оставшиеся повторения
Сохранить первоначальные дубликаты можно таким макаром:
$ cat garbage.txt | uniq -d > duplicates.txt
ну а потом все склеять
$ sort garbage.txt | uniq -u > myfile.txt
$ cat myfile.txt duplicates.txt > withoutgarbage.txt