GNU/Linux >> Tutoriels Linux >  >> Linux

Utilisation des commandes Sed, ex et perl pour rechercher et remplacer un texte sous Linux

Question :  Je voudrais remplacer un texte par un lien dans la balise d'ancrage d'un fichier html. Le défi est que le projet contient des centaines de ces fichiers HTML et le remplacement manuel d'un texte dans tous ces fichiers n'est pas une manière intelligente de le faire. Donc la question est, comment puis-je faire la même chose en utilisant une seule commande sous Linux ?

Solution :

Utiliser sed commande sous Linux :

sed -i 's/#\(.*logo\)/domain.ca\1/' $file

La commande ci-dessus recherche la ligne qui contient le motif logo et remplace "#" par un lien (par exemple, un domaine.ca)

Vous pouvez également transmettre plusieurs fichiers pour la commande ci-dessus, comme indiqué ci-dessous.

Une autre variante de la commande ci-dessus est :

sed -i '/logo.png/ s/#/domain.ca/' *.html

Utiliser perl commande :

perl -i -pe 's/#/domain.ca/ if /logo.png/' about-us.html

La commande est très simple - recherchez le texte et remplacez-le par une certaine chaîne si et seulement si elle trouve une chaîne correspondante sur cette ligne du fichier.

Toutes les commandes ci-dessus font le même travail, mais elles ne diffèrent que par la façon dont vous mettez votre expression régulière.

Utiliser Vim dans ex mode (ne peut pas être utilisé avec plusieurs fichiers) :

ex -sc '/logo/s/#/http:\/\/domain.ca\//|x' about-us.html

Dans la commande ci-dessus, l'expression régulière '/logo/s/#/http:\/\/domain.ca\//|x ' se compose de 's' et 'x' - où 's' est pour le remplacement et 'x' est pour enregistrer et fermer le fichier.

Remarque :La commande ci-dessus utilise vim , vous ne pouvez pas transmettre plusieurs fichiers. Vous devez exécuter cette commande manuellement pour chaque fichier à remplacer.


Linux
  1. La commande Linux Sed :utilisation et exemples

  2. Utilisation de sed pour rechercher et remplacer des fichiers texte sous Linux

  3. rechercher et supprimer des fichiers avec de l'espace à l'aide de la commande find sous Linux

  4. trouver le texte correspondant et remplacer la ligne suivante

  5. Rechercher et remplacer du texte dans un fichier entre une plage de lignes à l'aide de sed

Comment utiliser sed pour rechercher et remplacer une chaîne dans des fichiers

Comment utiliser la commande SED pour rechercher et remplacer une chaîne dans des fichiers

Rechercher du texte dans des fichiers sous Linux à l'aide de grep

50 exemples simples et utiles de la commande Find sous Linux

Comment rechercher et remplacer du texte dans Vim

Tutoriel Unix Sed :Rechercher et remplacer du texte dans un fichier à l'aide de RegEx