
Как удалить строку, только если она находится под указанным номером и соответствует шаблону?
Например:
- Я хочуудалить(
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
достаточно хорошо, но он покажет вам только этот вывод. Если вы хотите изменить файл, и у вас sed
GNU 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
.