Как в VIM удалить повторяющуюся строку в заданном диапазоне
но оно удаляет только дважды встреченную строкучем это отличается от того, что ты хочешь?
может так?
%s/^\(.*\)\(\n\1\)\+$/\1/
рецепт не совмещается - то есть не работает.
Ошибся. Не дают результата оба случая. Во втором случае ещё и выдается сообщение:
E486: Pattern not found: ^\(.*\)\n\1$
1. какой результат
2. Ты уверен, что у тебя там есть повторяющиеся строки? Нажми на какой-нибудь "yy p" (без кавычек) и попробуй заново.
set magic?
2. Ты уверен, что у тебя там есть повторяющиеся строки? Нажми на какой-нибудь "yy p" (без кавычек) и попробуй заново.
1. Вывело сообщение
2. Повторяющиеся строки точно есть.
magicв строке статуса
2. Повторяющиеся строки точно есть.
попробуй
5,50!uniq
%s/^\(.*\)\(\n\1\)*$/\1/
может так?А ну да, с плюсом даже правильнее. Не знаю, у меня работает. Диапазон можно просто через V выделить, тоже работает.
да вот именно, что все работает, я даже не знаю, что там может быть не так :/
чем это отличается от того, что ты хочешь?видимо хочет он от строк избавиться идущих подряд не только.
Все, решение найдено.
1. Сортировать нужный участок
2. Удалить повторяющиеся
1. Сортировать нужный участок
:2,127!sortТеперь повторяющиеся строки идут сплошными блоками
2. Удалить повторяющиеся
2,127!uniqПовторяющиеся строки удаляются
man -P cat sort | grep -A 1 -- -u
-P cat - для понтов?
зы. Геныч, извращения всякие бывают, конечно, но vim все-таки для ручного редактирования
зы. Геныч, извращения всякие бывают, конечно, но vim все-таки для ручного редактирования

-P cat - для понтов?Для надежности.
Для корректной работы команды и intended behaviour.
man -P 'grep -A 1 -- -u' sortпомни о котятах всегда.
Ты подстрелил меня, Билли! Ты всегда был чертовски ловок!
из диапазона с 5 по 50 строку каждая строка в результате встречалась только один раз.head source.txt -n 5 > result.txt
head source.txt -n 50|tail -n 45|uniq >> result.txt
tail source.txt -n +51 >> result.txt
Оставить комментарий
5065584
Есть текстовый файл, в нем есть повторяющиеся строки. Нужно, чтобы, например, из диапазона с 5 по 50 строку каждая строка в результате встречалась только один раз. Гугление дало рецептно оно удаляет только дважды встреченную строку и во всем файле. С заданием диапазона рецепт не совмещается - то есть не работает.
Подскажите, пожалуйста правильный вариант