Какую команду sed / awk я могу использовать? Просто sort -u
удалим все экземпляры
Входные данные:
abc
abc
def
abc
abc
def
Ожидаемый результат:
abc
def
abc
def
источник
Какую команду sed / awk я могу использовать? Просто sort -u
удалим все экземпляры
Входные данные:
abc
abc
def
abc
abc
def
Ожидаемый результат:
abc
def
abc
def
Вот для чего uniq
стандартная команда.
uniq your-file
Обратите внимание, что некоторые uniq
реализации, такие как GNU uniq
, дадут вам первую последовательность строк, которые сортируют одинаково (где strcoll()
возвращает 0), в отличие от байтовых байтов (где memcmp()
или strcmp()
возвращает 0). Чтобы принудительно сравнить байты с байтами, независимо от uniq
реализации, вы можете принудительно указать локаль с C
помощью:
LC_ALL=C uniq your-file
Vim может достичь этого красиво:
:g/\v^(.*\n)\1/d
Или, если вы предпочитаете использовать vim в качестве инструмента командной строки, вы можете сделать это как
vim file -c "g/\v^(.*\n)\1/d" -c "wq"
Таким образом, вам не придется бороться с выходом из vim позже;)
Объяснение:
:g/
На всех строках, которые соответствуют этому регулярному выражению ...
\v^(.*\n)\1
Любая строка, за которой следует сама ...
/d
выполните команду d elete (удалите текущую строку). -c "wq"
Это , чтобы сохранить изменения и выйти.