1
Gracias

Unas palabras de agradecimiento nunca están de más.

Sed – trucos y tips

SED (Stream EDitor) es un comando de Linux que se utiliza para modificar las líneas de un fichero aplicando una serie de comandos específicos. En este artículo te enseñamos algunas de las opciones que hemos considerado más útiles para su uso.



Sustitución

Sustituir "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/'
    • Sustituir "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'
    • Sustituir "Foo" o "foo" por “bar” en todas las líneas:
      • sed 's/[Ff]oo/bar/g'
    • Sustituir "azul", "blanco" o “rojo” por “verde”:
      • sed 's/azul\|blanco\|rojo/verde/g'

Visualización

  • La primera 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 dos en dos:
    • sed '$!N;s/\n//'
  • Unir líneas de tres en tres:
    • 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

El comando sed posee un flag 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 sustitución (comando s).

A continuación 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 sustitución “s” asociado al [metacaracter "&"] y al flag “I”.

Ejemplo para mostrar únicamente las líneas que contienen el término “patron”:

  • sed -n 's/patron/&/Ip' fichero


Foto: © Everypixel
1
Gracias

Unas palabras de agradecimiento nunca están de más.

Haz una pregunta
Nuestros contenidos son redactados en colaboración con expertos del ámbito tecnológico bajo la dirección de Jean-François Pillou, fundador de CCM.net y director digital en el Grupo Figaro. CCM es un sitio de tecnología líder a nivel internacional y está disponible en 11 idiomas.
El documento « Sed – trucos y tips » 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.

0 Comentario