
Como excluo uma linha somente se ela estiver em um número de linha especificado e corresponder ao padrão?
Por exemplo:
- Eu queroexcluir(
d
); - oterceirolinha (
3
); - se éem branco(
^$
);
A seguinte sintaxe:
cat file | sed '3 /^$/d'
Retorna o seguinte erro:
sed: -e expression #1, char 3: unknown command: `/'
Responder1
Tente fazer isso:
sed '3{/^$/d;}' file
Observe as chaves.
Responder2
Como o usuário000001 respondeu, sed '3{/^$/d;}' file
é bom o suficiente, mas só mostrará essa saída. Se quiser modificar o arquivo, e o seu sed
for o GNU sed
, você pode usar sed -i '3{/^$/d}' file
(para GNU sed
, o ;
before }
também pode ser omitido aqui).
`-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).
Com FreeBSD/OS/X sed
, use sed -i '' '3{/^$/d;}' file
.