Para los ejemplos que se muestran en este artículo, se ha utilizado la versión 4.2.1 de sed como se muestra a continuación:
sed --version GNU sed version 4.2.1 Copyright (C) 2009 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law.
Sed tiene una sintaxis de la siguiente manera:
sed [-opciones] [comando] [<fichero(s)>]
Visualización
Para los casos en los que se necesita visualizar el contenido de un fichero o parte de éste, podemos utilizar alguno de los siguientes comandos:
sed 5q fichero1 # ver las primeras 5 líneas del fichero1 cat -n fichero1 | sed -n '5,6 p' # ver las líneas 5 y 6 del fichero1 sed -n '1p' fichero1 > fichero2 # copiar la primera linea de fichero1 a fichero2 sed -n '$p' fichero1 # mostrar la última línea de fichero1
Sustitución de cadenas y caracteres
En estos casos siempre es recomendable almacenar el resultado de una sustitución en otro fichero, dejando el fichero original sin modificar. Algunos ejemplos son los siguientes:
# reemplazar cadenas en todas las lineas que contentan dicha cadena del fichero1 y almacenar el resultado en fichero2 sed 's/cadena_vieja/cadena_nueva/g' fichero1 > fichero2 # reemplazar cadenas sólo en las líneas 200 y 201 sed '200,201 s/cadena_vieja/cadena_nueva/g' fichero1 > fichero2 # reemplazar multiples cadenas por una nueva sed 's/cadena_vieja_1\|cadena_vieja_2/cadena_nueva/g' fichero1 > fichero2 # remplazar todas las minúsculas por mayúsculas sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' fichero1 > fichero2
Insertar cadenas
Al igual que en el caso anterior, se dejará el fichero inicial sin modificar mientras que el segundo contendrá los cambios realizados.
# insertar una cadena al principio de cada línea
sed 's/^/cadena_al_inicio/' fichero1 >fichero2
# añadir una línea al final de un fichero
sed -e '$ cadena_al_final' fichero > fichero2
# insertar una linea en blanco antes de cada linea que cumpla con una cadena
sed '/cadena/{x;p;x;}' fichero1 > fichero2
# insertar una linea en blanco detrás de cada linea que cumpla con una cadena
sed '/cadena/G' fichero1 > fichero2
# insertar una linea en blanco antes y después de cada linea que cumpla con una cadena
sed '/cadena/{x;p;x;G;}' fichero1 > fichero2
# insertar una línea en blanco cada 2 líneas
sed 'n;G;' fichero1 > fichero2
Eliminar líneas y cadenas
Para eliminar caracteres o líneas completas, ya sea porque están vacías o bien por ser comentario, podemos utilizar los siguientes comandos:
sed '2,4 d' fichero1 > fichero2 # eliminar las líneas 100 y 105 del fichero1
sed '5,20 !d' fichero1 > fichero2 # eliminar todas las líneas excepto las 5 y 20
sed '$d' fichero1 > fichero2 # eliminar la última línea del fichero1
sed -i '$d' fichero1 # eliminar la última línea del fichero1 en el mismo fichero
sed '/cadena/ d' fichero1 > fichero2 # eliminar las líneas que contentan una cadena
sed '/^$/d' fichero1 > fichero2 # eliminar líneas en blanco
sed '/^$/d; / *#/d' fichero1 > fichero2 # eliminar líneas en blanco y comentarios bash