Com utilitzar Sed a Linux

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!