web-dev-qa-db-fra.com

Utilisation de «sed» pour rechercher et remplacer

Je sais que cette question a probablement déjà reçu une réponse. J'ai vu de nombreux sujets à ce sujet à divers endroits, mais les réponses sont généralement difficiles à extraire pour moi. Je cherche de l'aide avec un exemple d'utilisation de la commande 'sed'.

Disons que je voulais agir sur le fichier "hello.txt" (dans le même répertoire que Prompt). Partout où il contient la phrase "peu", il doit être remplacé par "asd". À quoi ressemblerait la commande?

338
roo

sed est le s tream ed itor , en ce que vous pouvez utiliser | (pipe) pour envoyer flux standard (STDIN et STDOUT en particulier) 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 éditer des fichiers directement, en utilisant le -i paramètre mentionné ci-dessous.
Tenez compte des éléments suivants :

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

s/ est utilisé pour s remplacer l'expression trouvée few par asd:

Les rares, les courageux.


L'asd, le brave.

/g signifie "global", ce qui signifie que cela doit être fait pour toute la ligne. Si vous omettez le /g (avec s/few/asd/, il doit toujours y avoir trois barres obliques quoi qu'il arrive) et few apparaît deux fois sur la même ligne, seul le premier few est changé en asd:

Les quelques hommes, les quelques femmes, les braves.


Les hommes asd, les quelques femmes, les braves.

Cela est utile dans certaines circonstances, comme la modification de caractères spéciaux au début des lignes (par exemple, en remplaçant les symboles supérieurs à certains que certaines personnes utilisent pour citer le matériel précédent dans les fils de discussion par un onglet horizontal tout en laissant une inégalité algébrique citée plus tard dans la ligne intact), mais dans votre exemple où vous spécifiez que n'importe oùfew se produit, il doit être remplacé, assurez-vous que vous avez /g.

Les deux options suivantes (drapeaux) sont combinées en une seule, -ie:

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

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

Remarque: il est important que vous utilisiez -i -e pour rechercher/remplacer. Si tu fais -ie, vous créez une sauvegarde de chaque fichier avec la lettre "e" ajoutée.

630
sed -i 's/fea/asd/g'  hello.txt

g: Global

s: substitut

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

75
PersianGulf