Как я могу удалить каждую нечетную строку, с помощью sed?
remove
keep
remove
keep
remove
...
GNU sed имеет подходящий режим адресации:
sed -n '1~2!p' file
, что означает, начиная со строки 1 и с шага 2, вывести все остальные строки.
Точно так же вы можете отбросить -n
и удалить совпадающие строки:
sed '1~2d'
Это также можно сделать с помощью awk:
awk 'NR%2==0' file
(Если номер строки кратен 2, выведите строку )
Вот самое короткое, что я могу придумать:
sed -n 'g;n;p' file
Он должен работать с не-GNU версиями sed
(а также GNU sed
).