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