Команда Linux, чтобы удалить дубликаты строк, но сохранить первое вхождение

729
user9371654

У меня есть текстовый файл. Каждая строка содержит строку. Некоторые строки повторяются. Я хочу удалить повтор, но я хочу сохранить первое вхождение. Например:

line1 line1 line2 line3 line4 line3 line5 

Должно быть

line1 line2 line3 line4 line5 

Я пытался: sort file1 | uniq -u > file2но это не помогло. Он удалил все повторяющиеся строки, пока я хочу, чтобы присутствовало первое вхождение. Мне не нужно сортировать. Просто удалите точное повторение строки в новой строке, оставив все как есть.

1

2 ответа на вопрос

2
Kamil Maciorowski

Если вы разрешите сортировку в любом случае, это будет работать:

sort | uniq 

-uбыл источником вашей проблемы, потому что (от man 1 uniq):

-u, --unique
печатать только уникальные строки

пока по умолчанию:

Без опций совпадающие строки объединяются с первым вхождением.

0
agc

Специализированные утилиты, которые печатают уникальные строки без сортировки:

  1. uq,

  2. unique,

Смотрите также: Как получить только уникальные результаты без сортировки данных? и Unix: удаление повторяющихся строк без сортировки .