SED

  • La comanda sed és un editor orientat a línia no interactiu.
  • El funcionament bàsic d’aquesta comanda és la següent:
    • Rep un text d’entrada (des de l’entrada estàndard o des d’un fitxer)‏
    • Realitza operacions sobre totes o un subconjunt de les línies de text d’entrada, processant una línia en cada moment.
    • El resultat s’envia a la sortida estàndard.
  • Sintaxi:
	$ sed operació [fitxer... ]     
  • L’especificació de l’operació a realizar per la comanda sed té el format següent:

    [ adreça[ , adreça ] ] comanda
    
  • Les adreces decideixen el rang de línies de text sobre les que s’aplicarà la comanda.

  • El rang de línies sobre les que es realitzarà el processament es pot especificar de dues formes:

    • Rang d’adreces. S’especifica amb la línia inicial i la final del rang (ambdues incloses). Per referenciar el final de línia s’utilitza un $.
    • Patró de coincidència. S’utilitza una expressió regular per decidir el conjunt de línies a processar per la comanda sed.

Exemples:

    $ sed ‘1,5d’ fich1  # Elimina les cinc primeres línies de fich1
    $ sed ‘$d’ fich1  		# Elimina l’última línia de fich1
    $ sed ‘/^[1a]/d’ fich1  # Elimina totes les línies que comencen amb 1 o a
			            	# /^[1a]/  és una expressió regular

Comandes SED més importants

  • Comanda d’impressió ([rang-adreces]/p)‏ Imprimeix les línies seleccionades.
  • Comanda d’esborrar ([rang-adreces]/d)‏ Les línies seleccionades d’entrada són eliminades, imprimint la resta de línies per pantalla.
  • Comanda de substitució ([rang-adreces]/s/patró1/patró2/)‏ Substitueix la primera instància de patró1 per patró2 en cada línia seleccionada.
  • Comanda de lectura d’un fitxer ([rang-adreces]/r nom_fic)‏
  • Comanda d’escriptura d’un fitxer ([rang-adreces]/w nom_fic)‏

Exemples

  • Eliminar totes les línies en blanc:
	$ sed  '/^$/d’ fic
  • Imprimir totes les línies des del principi fins la primera línia en blanc:
	$  sed  –n  '1,/^$/p’ fic
  • Substituir la primera ocurrència de la paraula Windows per la paraula Linux en cadascuna de las línies del fitxer:
	$ sed  's/Windows/Linux/’ fic
  • Esborrar tots els espais en blanc al final de cada línia:
	$ sed  's/*$//’ fic
  • Canvia totes les seqüències d’un o més zeros per un únic 0. La g permet múltiples substitucions en una mateixa línia:
	$ sed  's/00*/0/g’ fic