Entendiendo el comando sed II

Sunday, February 8, 2009 16:21
Posted in category Linux

En el articulo anterior os hice una primera presentación del comando sed. Hoy voy a seguir contandoos 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.

You can leave a response, or trackback from your own site.

Leave a Reply