У меня работает команда awk. Я всегда думал, что для awk требуется минимум один блок {...}. приятно знать, что нет. Это первая нетривиальная команда awk, с которой я работал!
the_velour_fog
1
@the_velour_fog блок будет необходимо. если вы не напишите, AWK будет вести себя так, как если бы вы написали{ print $0 }
shadowtalker
@RKetkaew Какой из вариантов вы использовали? Если ответ решает ваш вопрос, нажмите на галочку, чтобы пометить его как ответ.
underscore_d
@underscore_d Привет! Я использовал команду, предложенную DarkHeart. Спасибо за ваши Коментарии.
Рангсиман
12
:2,$v/0$/d
удаляет строки, которые не заканчиваются, 0начиная со второго.
Это умное решение. Я бы просто добавить объяснение , что 2,$это диапазон, и v/0$/dв g!команде. Где 0$находится регулярное выражение и dкоманда ex, которая будет выполняться на всех не совпадающих строках.
:[range]d
например,:3,5d
удалив строки с трех по пять (включительно).gsed -n '1p; 0~10p'
Ответы:
Если вы хотите сохранить каждую десятую строку и удалить остальные:
Объяснение:
%
весь файлnorm
выполните следующие команды в "нормальном режиме"9dd
удалить 9 строкj
сдвинуться вниз на одну строку (т.е. оставить ее)примечание: это удаляет первый ряд.
Адаптировано с http://www.rayninfo.co.uk/vimtips.html
Или с помощью глобальной команды:
:g/^/+ d9
Адаптировано с /programming/1946738/vim-how-to-delete-every-second-row
Или вы можете использовать
awk
:источник
{...}
. приятно знать, что нет. Это первая нетривиальная команда awk, с которой я работал!{ print $0 }
удаляет строки, которые не заканчиваются,
0
начиная со второго.источник
2,$
это диапазон, иv/0$/d
вg!
команде. Где0$
находится регулярное выражение иd
команда ex, которая будет выполняться на всех не совпадающих строках.