Как удалить строку, только если она находится под указанным номером и соответствует шаблону?

Как удалить строку, только если она находится под указанным номером и соответствует шаблону?

Как удалить строку, только если она находится под указанным номером и соответствует шаблону?


Например:

  • Я хочуудалить( d);
  • the третийлиния ( 3);
  • если этопустой( ^$);

Следующий синтаксис:

cat file | sed '3 /^$/d'

Возвращает следующую ошибку:

sed: -e expression #1, char 3: unknown command: `/'

решение1

Попробуйте сделать это:

sed '3{/^$/d;}' file

Обратите внимание на фигурные скобки.

решение2

Как ответил user000001, sed '3{/^$/d;}' fileдостаточно хорошо, но он покажет вам только этот вывод. Если вы хотите изменить файл, и у вас sedGNU sed, вы можете использовать sed -i '3{/^$/d}' file(для GNU sed, ;before }здесь также можно опустить).

`-i[SUFFIX]'
`--in-place[=SUFFIX]'
     This option specifies that files are to be edited in-place.  GNU
     `sed' does this by creating a temporary file and sending output to
     this file rather than to the standard output.(1).

В FreeBSD/OS/X sedиспользуйте sed -i '' '3{/^$/d;}' file.

Связанный контент