Utilisation de ' sed ' pour rechercher et remplacer [duplicate]

Cette question a déjà des réponses ici :

Commentaires

Réponse

sed est le s trame ed itor , en ce que vous pouvez utiliser | (pipe) pour envoyer flux standard (STDIN et STDOUT spécifiquement) via sed et les modifier par programmation à la volée, ce qui en fait un outil pratique dans la tradition de la philosophie Unix; mais peut également modifier les fichiers directement à laide du paramètre -i mentionné ci-dessous.
Tenez compte de ce qui suit :

 sed -i -e "s/few/asd/g" hello.txt  

s/ est utilisé pour s substituer lexpression trouvée few avec asd:

Les rares, les courageux.


Lasd , les courageux.

/g signifie « global », ce qui signifie faire cela pour toute la ligne. Si vous omettez /g (avec s/few/asd/, il doit toujours y avoir trois barres obliques quoi quil arrive) et few apparaît deux fois sur la même ligne, seul le premier few est remplacé par asd:

Les quelques hommes, les quelques femmes, les courageux.


Les hommes asd, les quelques femmes, les courageux.

Ceci est utile dans certaines circonstances, comme la modification des caractères spéciaux au début des lignes (par exemple, en remplaçant les symboles plus grands que certaines personnes utilisent pour citer le matériel précédent dans les fils de discussion. avec une tabulation horizontale tout en laissant une inégalité algébrique entre guillemets plus tard dans la ligne intacte), mais dans votre exemple où vous spécifiez que nimporte où few se produit, il doit être remplacé , assurez-vous que /g.

Les deux options (indicateurs) suivantes sont combinées en une seule, :

-i loption est utilisée pour modifier i n place sur le fichier hello.txt.

-e indique loption e xpression / commande à exécuter, dans ce cas s/.

Remarque: Il est important que vous utilisiez -i -e pour rechercher / remplacer. Si vous faites -ie, vous créez une sauvegarde de chaque fichier avec la lettre « e » ajoutée.

Commentaires

  • Je ' m sous OS X, pour ce que vaut ', mais voici lerreur que jobtiens: sed: 1: " hello.txt ": code de commande non valide.
  • Une modification a été proposée pour ajouter le -e drapeau à sed. Lindicateur -e est facultatif tant que la commande à exécuter apparaît en premier, il ny a pas de fichier de commande et de commande arg, et il ny a quune seule commande.
  • @roo sur mac os x, en utilisant -ie Je reçois ce fichier foo est sauvegardé en tant que fooe.
  • cette commande me donne un fichier supplémentaire se terminant par -e, pourquoi ??: index.html-e sed -i -e ' s / n / d / g ' index.html
  • Sur Mac, -i -e crée un nouveau fichier avec -e ajouté au nom. Cela semble fonctionner dans bash: sed " -i " " " " -e " " s / quelques / asd / g " " un fichier.xml "

Réponse

sed -i "s/fea/asd/g" hello.txt 

g: Global

s: remplace

-i : fonctionne en temps réel avec le fichier inplace

Commentaires

  • Lorsquil sagit de liens symboliques, il est bon dajouter --follow-symlinks sinon -i transformera le lien symbolique en une copie (modifiée) du fichier.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *