Удалить строку, если следующая строка такая же

О, я думаю, сначала нужно установить gcc-multilibс помощью:

sudo apt install gcc-multilib
15
03.10.2019, 13:20
2 ответа

Для этого и предназначена стандартная команда uniq.

uniq your-file

Обратите внимание, что некоторые uniqреализации, такие как GNU uniq, дадут вам первую из последовательности строк, которые сортируют одно и то же (, где strcoll()возвращает 0 ), а не байты от -до -идентичны байтам (, где memcmp()или strcmp()возвращает 0 ). Чтобы принудительно выполнить сравнение байтов независимо от реализации uniq, вы можете установить локаль на Cс помощью:

LC_ALL=C uniq your-file
36
27.01.2020, 19:49

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"— сохранить изменения и выйти.

7
27.01.2020, 19:49

Теги

Похожие вопросы