GNU/Linux >> Tutoriels Linux >  >> Linux

Remplacer un mot par un autre en bash

Vous pouvez utiliser sed pour cela :

$ sed s/sara/mary/g <<< 'hello sara , my name is sara too .'
hello mary , my name is mary too .

Ou si vous souhaitez modifier un fichier en place :

$ cat FILE
hello sara , my name is sara too .
$ sed -i s/sara/mary/g FILE
$ cat FILE
hello mary , my name is mary too .

Vous pouvez utiliser sed :

# sed 's/sara/mary/g' FILENAME

affichera les résultats. La construction s/// signifie rechercher et remplacer à l'aide d'expressions régulières. Le 'g' à la fin signifie "chaque instance" (pas seulement la première).

Vous pouvez également utiliser perl et modifier le fichier sur place :

# perl -p -i -e 's/sara/mary/g;' FILENAME

Ou awk

awk '{gsub("sara","mary")}1' <<< "hello sara, my name is sara too."

Manière bash pure :

before='hello sara , my name is sara too .'
after="${before//sara/mary}"
echo "$after"

OU en utilisant sed :

after=$(sed 's/sara/mary/g' <<< "$before")
echo "$after"

SORTIE :

hello mary , my name is mary too .

Linux
  1. Utilisation de modificateurs de mots avec l'historique Bash sous Linux

  2. Comment remplacer une chaîne par une chaîne contenant une barre oblique avec Sed ?

  3. Bash -c avec des paramètres positionnels ?

  4. Remplacer une ligne par un autre contenu en utilisant Sed et Parallel pour un gros fichier ?

  5. Remplacer la plage de lignes par la plage de lignes (sed ou autres) ?

Remplacer du par de la poussière sous Linux

Ajout avec "sed" ?

Ajouter un mot à la fin de la ligne avec Sed ?

Remplacement d'une sous-chaîne par une autre chaîne dans Bash

remplacer les lignes d'un fichier par les lignes d'un autre par numéro de ligne

sed remplace tous les onglets et espaces par un seul espace