Как удалить каждую другую строку с помощью 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 $. - номер строки
Ответ 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).