Sed – Eliminar una o varias líneas de un fichero

Mayo 2017


Sintaxis


sed '{[/]<n>|<cadena>|<regex>[/]}d' <nombre_ fichero>
sed '{[/]<direccion1>[,<direccion2>][/]d' <nombre_fichero
  • /.../ = delimitadores
  • n = el número de línea
  • cadena = la cadena contenida en la línea
  • regex = expresión regular correspondiente a la ocurrencia buscada
  • direccion = la dirección de una línea (número u ocurrencia)
  • d = delete (borrar)

Ejemplos


Eliminación de la 3ra línea

sed '3d' mi_fichero.txt


Eliminación de la línea conteniendo la cadena "awk"

sed '/awk/d' mi_fichero.txt


Eliminación de la última línea

sed '$d' mi_fichero.txt


Eliminación de todas las líneas vacías

sed '/^$/d' mi_fichero.txt
sed '/./!d' mi_fichero.txt


Eliminación de la línea conteniendo una expresión regular
(aquí se elimina la línea conteniendo caracteres numéricos (al menos 1 cifra) situados al final de la línea)

sed '/[0-9/][0-9]*$/d' mi_fichero.txt


Eliminación del intervalo comprendido entre las líneas 7 y 9

sed '7,9d' mi_fichero.txt


Lo mismo pero esta vez la dirección es reemplazada por una ocurrencia

sed '/-Inicio/,/-Fin/d' mi_fichero.txt

Nota


Los ejemplos precedentes únicamente modifican la visualización del archivo (salida estándar 1 = la pantalla).
Para realizar modificaciones permanentes, en las antiguas versiones (<4) utilizar un fichero temporal, para GNU sed utilizar el parámetro "-i[sufijo]" (--in-place[=sufijo]), como en el ejemplo siguiente:

sed -i".bak" '3d' mi_fichero.txt


No mostrará el resultado en la salida estándar, y modificará el fichero original "mi_fichero.txt" eliminando la 3ra línea y creará un fichero de respaldo llamado "mi_fichero.txt.bak"
Fichero a ser utilizado en los ejemplos (mi_fichero.txt):

Introducción
Este es un ejemplo de fichero para familiarizarse con el filtro “sed”.

Presentación

-Inicio-
Sed es un editor de flujo (Stream EDitor), derivado del editor de texto “ed”, muy utilizado
en los sistemas Unix.
-Fin-

Uso

El comando más utilizado del filtro “sed” es sin dudas el comando de sustitución (s), que
permite reemplazar en cada línea la primera ocurrencia de una cadena1 por una cadena2.
Para una sustitución de todas las ocurrencias (encontradas) en cada línea hay que utilizar
el parámetro “g” (global).

Conclusión

El filtro “sed” es sin dudas uno de los comandos más utilizados en asociación con otros
comandos como “grep” o "awk" para la escritura de scripts shell.
El conocimiento y el dominio de expresiones regulares es un plus.

-------------------
Editado el 05/01/2007
A las 17:00 por JP

Consulta también

Artículo original escrito por . Traducido por Carlos-vialfa. Última actualización: 30 de julio de 2009 a las 01:40 por Carlos-vialfa.
El documento «Sed – Eliminar una o varias líneas de un fichero» se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo libremente. No olvides citar a CCM (es.ccm.net) como tu fuente de información.