GNU/Linux >> Tutoriels Linux >  >> Linux

Utiliser "sed" pour rechercher et remplacer ?

Cette question a déjà des réponses ici :Comment remplacer une chaîne dans un ou plusieurs fichiers ?

(9 réponses)
Fermé il y a 6 ans.

Je sais que cette question a probablement déjà reçu une réponse. J'ai vu de nombreux fils de discussion à 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 l'invite). Partout où il contenait l'expression «peu», il devrait être remplacé par «asd». À quoi ressemblerait la commande ?

Réponse acceptée :

sed est le s streamer ed itor, en ce sens que vous pouvez utiliser | (pipe) pour envoyer des flux standards (STDIN et STDOUT spécifiquement) via sed et les modifier par programme à la volée, ce qui en fait un outil pratique dans la tradition de la philosophie Unix ; mais peut aussi éditer des fichiers directement, en utilisant le -i paramètre mentionné ci-dessous.
Considérez ce qui suit :

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

s/ est habitué à s remplacer l'expression trouvée few avec asd :

Les rares, les braves.

Les asd, les braves.

/g signifie « global », ce qui signifie qu'il faut le faire 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, seulement les premiers few est remplacé par asd :

Les quelques hommes, les quelques femmes, les braves.

Les hommes, les rares femmes, les braves.

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

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

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

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

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

En relation:abeles -Trouver le sens- Recherche de dictionnaire !
Linux
  1. Éditeur Vi et Vim :12 exemples puissants de recherche et de remplacement

  2. rechercher et copier un fichier à l'aide de Bash

  3. Rechercher et copier des fichiers

  4. Recherche de fichiers exécutables à l'aide de ls et grep

  5. trouver le texte correspondant et remplacer la ligne suivante

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

Comment rechercher et remplacer du texte, un mot ou une chaîne dans un fichier

Comment rechercher et remplacer du texte dans Vim

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

Comment utiliser Sed pour rechercher et remplacer une chaîne dans un fichier

Suppression de fichiers avec rm en utilisant find et xargs