Sed
significa editor de fluxos. És un editor basat en línia d'ordres per a Linux. L'ús popular de sed és per editar fitxers com a part d'un script d'automatització a Linux, ja que els editors habituals requereixen l'entrada activa de l'usuari i no poden editar fitxers fora de les pantalles de l'editor. Sed s'utilitza més habitualment per fer una cerca i substitució des de la línia d'ordres.
Aquest tipus d'editor de text també es pot classificar com a editor de text no interactiu.
Vegem algunes opcions habituals per editar fitxers amb Sed. Prenem com a exemple el fitxer següent:
$: cat test.txt Un gos marró ràpid va saltar per sobre del gat mandrós. Sistema operatiu Linux. El bosc prop del meu lloc té un gat i llops.
Cerca i substitueix
Per cercar una cadena en un fitxer i substituir-la per una altra cadena, executeu:
sed -i "s/cat/fox/g" test.txt
Aquí, el -i
flag indica a sed que escrigui els canvis al fitxer. Sense aquesta bandera, sed
només mostrarà el fitxer amb la cadena canviada.
A les cometes, tenim s/cat/guineu/g
. El s
és per al comandament de cerca i substitució de sed
. Aleshores tenim la cadena a cercar, que és gat
. A continuació, la cadena per substituir-la, és a dir, guineu
. Finalment, tenim l'opcional g
, que instrueix sed
per substituir totes les ocurrències a totes les línies del fitxer. Sense el g
, sed substituirà només la primera aparició de gat
a cada línia.
Regex també es pot utilitzar aquí.
sed -i "s/f[a-z]*\./cat\./g"
Insereix
Per inserir text abans d'una línia amb una cadena coincident, utilitzeu:
sed -i "/cat/i Inici:" test.txt
Aquí, gat
és la cadena cercada i Començar:
és la cadena que cal introduir abans de la línia on es troba la cadena cercada.
De la mateixa manera, per inserir text després d'una línia, utilitzeu:
sed -i "/fox/a Final." prova.txt
Suprimeix
Per suprimir una línia que contingui una subcadena, utilitzeu:
sed -i "/Linux/d" test.txt
Per esborrar una línia amb el número de línia, p. la primera línia, utilitzeu:
sed -i '1d' test.txt
Combinació de múltiples funcions
Per combinar múltiples funcions, p. cercar i substituir, suprimir, en una ordre, -e
es pot utilitzar la bandera.
sed -i -e "s/fox/cat/g" -e '2d' test.txt
? Salut!