Entendiendo el comando sed II

En el articulo anterior les hice una primera presentación del comando sed. Hoy voy a seguir contandoles cosas acerca de este magnífico editor de textos (Stream Editor).

En principio las funciones aplicadas por sed se aplican a todas las líneas de un fichero. Es posible delimitar dichas acciones a una sola línea, a un rango de líneas, a la última línea, o a las líneas identificadas por una expresión regular:

Si se pone un número o el carácter $ , la función se aplica sobre la línea indicada. El carácter $ representa la última línea del fichero:

  sed -e \$d fichero_prueba #Borra la última línea
sed -e 1d fichero_prueba #Borra la primera línea

Si se ponen dos números, la función se aplicará a las líneas cuyo número esté en el rango establecido:

  sed -e 3-6d  fichero_prueba #Borra desde la línea 3 a la 6 incusive

Si se pone una expresión regular, la función se aplicará sobre las líneas que encajen con la expresión regular (Las expresiones regulares en sed, se fijan entre barras del 7 /

 sed -e /^$/d fichero_datos #Borra líneas vacias

Si se ponen 2 expresiones regulares, éstas definirán parráfos. El primer parráfo comenzará cuando se encuentre la primera expresión regular, y abarcará hasta que se encuentre la segunda expresión regular. Acabado el primer parráfo, el segundo comenzará con la primera línea en que se encuentre la primera expresión regular, y así sucesivamente:

 cat fichero_datos
lunes
martes
miercoles
jueves
viernes
sabado
domingo
sed /n/,/vier/d fichero_datos

El ejemplo anterior tomará como primer párrafo, las líneas de lunes a viernes y como segundo la línea domingo.

Un carácter de exclamación ( ! ), después de establecer el rango de líneas en el que queremos que se aplique la función indicada a sed, hará que ésta se aplique justamente al rango de líneas complementario al que tomaría sin ese carácter:

 sed /^$/\!d fichero_datos  #Borraría todas las líneas NO vacias

Ojo, para sed, el carácter $ significa última línea, pero para las expresiones regulares, el carácter $ significa final de línea.


Deckerix



stumbleupondeliciousredditTechnoratiFacebookTwitter