¿Cómo elimino una línea solo si está en el número de línea especificado y coincide con el patrón?

¿Cómo elimino una línea solo si está en el número de línea especificado y coincide con el patrón?

¿Cómo elimino una línea solo si está en un número de línea específico y coincide con el patrón?


Por ejemplo:

  • Yo quieroborrar( d);
  • eltercerolínea ( 3);
  • si esblanco( ^$);

La siguiente sintaxis:

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

Devuelve el siguiente error:

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

Respuesta1

Intenta hacer esto:

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

Tenga en cuenta los tirantes.

Respuesta2

Como respondió user000001, sed '3{/^$/d;}' filees bastante bueno, pero solo le mostrará ese resultado. Si desea modificar el archivo y su archivo sedes GNU sed, puede usarlo sed -i '3{/^$/d}' file(para GNU sed, el ;antes }también se puede omitir aquí).

`-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).

Con FreeBSD/OS/X sed, utilice sed -i '' '3{/^$/d;}' file.

información relacionada