Introducció a sed

sed (Stream Editor) és una eina potent per a la manipulació de text en Bash. Permet realitzar operacions com la substitució, inserció, supressió i transformació de text en fitxers o fluxos de dades. És especialment útil per a l'edició de fitxers de text de manera no interactiva.

Conceptes Clau

  • Patró de Cerca i Substitució: sed permet buscar patrons de text i substituir-los per altres.
  • Edició en Lloc: sed pot modificar fitxers directament.
  • Comandes de sed: Les comandes més comunes inclouen s (substituir), d (esborrar), i (inserir) i a (afegir).

Sintaxi Bàsica

La sintaxi bàsica de sed és:

sed 'comanda' fitxer

Per exemple, per substituir totes les ocurrències de "foo" per "bar" en un fitxer:

sed 's/foo/bar/g' fitxer.txt

Exemples Pràctics

Substitució de Text

Substituir totes les ocurrències de "hello" per "world" en un fitxer:

sed 's/hello/world/g' fitxer.txt

Explicació:

  • s: Indica una substitució.
  • hello: El text a buscar.
  • world: El text de substitució.
  • g: Indica que la substitució és global (totes les ocurrències en cada línia).

Edició en Lloc

Modificar un fitxer directament sense crear un fitxer temporal:

sed -i 's/old/new/g' fitxer.txt

Explicació:

  • -i: Edita el fitxer en lloc.

Esborrar Línies

Esborrar totes les línies que contenen "delete":

sed '/delete/d' fitxer.txt

Explicació:

  • /delete/: El patró a buscar.
  • d: Esborrar les línies que coincideixen amb el patró.

Inserir i Afegir Línies

Inserir una línia abans d'una línia que conté "pattern":

sed '/pattern/i\Aquesta és una nova línia' fitxer.txt

Afegir una línia després d'una línia que conté "pattern":

sed '/pattern/a\Aquesta és una nova línia' fitxer.txt

Explicació:

  • i\: Inserir abans.
  • a\: Afegir després.

Exercicis Pràctics

Exercici 1: Substitució Simple

Substitueix totes les ocurrències de "cat" per "dog" en el fitxer animals.txt.

sed 's/cat/dog/g' animals.txt

Exercici 2: Esborrar Línies

Esborra totes les línies que contenen la paraula "error" en el fitxer log.txt.

sed '/error/d' log.txt

Exercici 3: Inserir Text

Inserir la línia "Inici del fitxer" abans de la primera línia del fitxer data.txt.

sed '1i\Inici del fitxer' data.txt

Exercici 4: Afegir Text

Afegir la línia "Final del fitxer" després de l'última línia del fitxer data.txt.

sed '$a\Final del fitxer' data.txt

Solucions als Exercicis

Solució 1

sed 's/cat/dog/g' animals.txt

Solució 2

sed '/error/d' log.txt

Solució 3

sed '1i\Inici del fitxer' data.txt

Solució 4

sed '$a\Final del fitxer' data.txt

Errors Comuns i Consells

  • Oblidar el modificador g: Sense el modificador g, només es substituirà la primera ocurrència en cada línia.
  • No utilitzar cometes simples: És recomanable utilitzar cometes simples per evitar que el shell interpreti caràcters especials.
  • Edició en lloc sense còpia de seguretat: Quan utilitzis -i, considera fer una còpia de seguretat del fitxer original.

Conclusió

sed és una eina essencial per a qualsevol programador que treballi amb Bash. La seva capacitat per manipular text de manera eficient i no interactiva la fa indispensable per a tasques d'automatització i processament de dades. Amb la pràctica, podràs utilitzar sed per resoldre una àmplia varietat de problemes de text de manera ràpida i eficient.

© Copyright 2024. Tots els drets reservats