Substitución
Substituir «foo» por «bar» en todas las líneas
Sólo en la 1ra ocurrencia
sed ‘s/foo/bar/’
Sólo en la 3ra ocurrencia
sed ‘s/foo/bar/3’
En todas las ocurrencias
sed ‘s/foo/bar/g’
Sólo en la penúltima ocurrencia
sed ‘s/\(.*\)foo\(.*foo\)/\1bar\2/’
Sólo en la última ocurrencia
sed ‘s/\(.*\)foo/\1bar/’
Substituir «foo» por «bar» sólo en las líneas que contienen “plop”
sed ‘/plop/ s/foo/bar/g’
Substituir «foo» por «bar» menos en las líneas que contienen “plop”
sed ‘/plop/! s/foo/bar/g’
Substituir «Foo» o «foo» por “bar” en todas las líneas
sed ‘s/[Ff]oo/bar/g’
Substituir «azul», «blanco» o “rojo” por “verde”
sed ‘s/azul\|blanco\|rojo/verde/g’
Visualización
La 1ra línea (head -1)
sed q
Las 5 primeras líneas (head -5)
sed ‘5q’
sed ‘1,5!d’
La última línea (tail -1)
sed -n ‘$p’
sed ‘$!d»
Las 5 últimas líneas (tail -5)
sed -e :a -e ‘$q;N;6,$D;ba’
Las 2 últimas líneas (tail -2)
sed ‘$!N;$!D’
Sólo las líneas que coinciden con un patrón o expresión regular
sed -n ‘/patrón/p’
sed ‘/regexp/!d’
Sólo las líneas que no coinciden con un patrón o expresión regular
sed -n ‘/patrón/!p’
sed ‘/regexp/d’
La línea anterior a un patrón o expresión regular
sed -n ‘/patrón/{g;1!p;};h’
La línea que sigue a un patrón o expresión regular
sed -n ‘/regexp/{n;p;}’
Eliminación
Espacio y tabulación
Eliminar los espacios y las tabulaciones
Al inicio de línea
sed ‘s/^[ \t]*//
sed ‘s/^\s*//’ # Uso del parámetro «\s»
Al final de la línea
sed ‘s/[ \t]*$//’
Al inicio y al final de la línea
sed ‘s/^[ \t]*//;s/[ \t]*$//’
Línea vacía
Eliminar las líneas vacías
Todas las líneas vacías
sed ‘/^$/d’
sed ‘/./!d’
Sólo las del encabezado
sed ‘/./,$!d’
sed -nr ‘/./,$s/(.*)/\1/p’
Sólo las del final
sed -e :a -e ‘/^\n*$/ {$d;N;ba’ -e ‘}’
Intervalo regular
Eliminar una línea a intervalos regulares
Todas la líneas pares
sed ‘1~2d’
Todas la líneas impares
sed ‘2~2d’
Todas las n líneas a partir de la línea n
sed ‘3~2d’ # Todas les 2 líneas a partir de la línea 3
Diversos
Unir líneas
Unir líneas de 2 en 2
sed ‘$!N;s/\n//’
Unir líneas de 3 en 3
sed ‘$!N;s/\n//;$!N;s/\n//;’
Si una línea termina en un backslash (\), agregar la línea siguiente y reemplazar el final de línea (/n) por un espacio
sed -e :a -e ‘/\\$/N; s/\\\n/ /; ta’
Si un línea comienza con un signo igual (=), agregarla a la línea precedente y reemplazar el signo igual (=) por un espacio
sed -e :a -e ‘$!N;s/\n=/ /;ta’ -e ‘P;D’
Visualización sin tener cuenta de las mayúsculas y minúsculas
(Mostrar únicamente las líneas que coinciden con un patrón sin tener en cuenta las mayúsculas y minúsculas)
El comando sed posee un flag – ver [ Sed – Introducción a Sed – Parte 1]- que permite buscar un patrón sin tener en cuenta las mayúsculas y minúsculas, pero este flag se aplica únicamente al comando de substitución (comando s).
A continuaron veremos un truco que permite utilizar este flag para mostrar (o no mostrar) líneas que coinciden con un patrón dado sin tener en cuenta de las mayúsculas y minúsculas.
Para ello, tan solo hay que utilizar el comando de substitución “s” asociado al [ metacaracter «&»] y al flag “I”.
Ejemplo para mostrar únicamente las líneas que contienen el termino “patron” (o Patron, PATRON, pAtron, etc.)
sed -n ‘s/patron/&/Ip’ fichero
El siguinte ejemplo permite mostrar las lineas comprendidasen tre los patrones (al principio de linea) «Revisando puertos» y «Proceso ejecucion». Muestra solo ese fragmento del archivo :
cat $salida | sed -n ‘/^Revisando puertos/,/^Proceso en ejecucion/p’