
¿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;}' file
es bastante bueno, pero solo le mostrará ese resultado. Si desea modificar el archivo y su archivo sed
es 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
.