Как удалить каждую нечетную строку, используя sed?Как удалить каждую другую строку с sed?
remove
keep
remove
keep
remove
...
Как удалить каждую нечетную строку, используя sed?Как удалить каждую другую строку с sed?
remove
keep
remove
keep
remove
...
ГНУ СЭД имеет подходящий режим адресации:
sed -n '1~2!p' file
, что означает, начиная с линии 1, и с шагом 2, печать всех других линий.
Эквивалентно, вы можете уронить -n
, и удалить соответствующие строки:
sed '1~2d'
Она также может быть сделано с помощью AWK:
awk 'NR%2==0' file
(Всякий раз, когда номер строки кратна 2, печать линия)
Спасибо за это! очень полезно. –
Я получаю ошибку «недопустимый код команды ~», когда я пытаюсь это сделать с sed на macos. –
Краткая информация о том, как я могу думать о:
sed -n 'g;n;p' file
Он должен работать с версиями не GNU sed
(а также GNU sed
). более
+1 для портативности –
Это работает и на OS X! (В отличие от 'sed -n '1 ~ 2! P''.) Он берет линии 2,4,6, ... Я не мог понять из справочной страницы, как брать строки 1,3,5, .. Однако добавление первой строки - простой взлом. – Nagel
@Nagel: Попробуйте: 'sed -n 'p; n' file' или' sed 'n; d' file' для вывода нечетных строк. Кстати, я не думаю, что 'g' необходимо для вывода четных строк:' sed -n 'n; p' file', похоже, работает. –
Один AWK:
awk getline file
решение Perl:
perl -ne 'print if $. % 2 == 0' file
$.
номер строки
Парень попросил 'sed', который показывает ваши навыки чтения с вашей стороны, но кто-то может найти это полезным, поэтому +1. –
Я ответил, так как sed, awk и perl часто могут использоваться взаимозаменяемо. Несмотря на различия в скорости и простоте, все они используются в командной строке или внутри сценариев оболочки. –
Половина вопросов сегодня утром, кажется, первоапрельских шуток, а также ... – Will
Если это апрельский дурак, тогда ответ должен быть: grep Не input.txt – paxdiablo
@paxdiablo: А как насчет 'grep -v Remove'? – Cascabel