Como excluo uma linha somente se ela estiver no número de linha especificado e corresponder ao padrão?

Como excluo uma linha somente se ela estiver no número de linha especificado e corresponder ao padrão?

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 sedfor 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.

informação relacionada