GNU/Linux >> Tutoriels Linux >  >> Ubuntu

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

Présentation

Sed signifie S flux ED itor. Il s'agit d'une commande Linux utilisée pour rechercher, trouver et remplacer, ou insérer et supprimer des mots et des lignes dans un fichier texte.

Le cas d'utilisation le plus courant de la commande Sed consiste à rechercher et à remplacer des chaînes dans des fichiers. Lorsque vous utilisez la commande Sed, vous pouvez modifier des fichiers sans les ouvrir.

Cet article explique en détail l'utilisation de la commande Sed pour rechercher et remplacer des chaînes dans des fichiers.

Tous les exemples de ce tutoriel ont été exécutés sur Ubuntu 20.04.

Rechercher et remplacer

Par défaut, Sed est installé dans la plupart des distributions Linux. Vous pouvez vérifier l'installation de Sed sur votre système Linux en exécutant :

$ sed --v

Le résultat ressemblera à ceci :

La syntaxe de base de l'utilisation de la commande Sed pour rechercher et remplacer du texte est :

$ sed -i 's/Search_pattern/Replacement_pattern/g' FILE

Dans lequel :

-i :cette option permet à la commande Sed d'éditer les fichiers sur place au lieu d'écrire la sortie sur la sortie standard.

s :il signifie substitut.

/ / :Caractères délimiteurs.

g :Il s'agit d'un indicateur de remplacement global.

FICHIER :Le fichier que vous souhaitez manipuler par la commande Sed.

Il est fortement recommandé de mettre le modèle de recherche, le modèle de remplacement et les autres arguments entre guillemets.

Par exemple, voici un fichier texte utilisé pour la démonstration :

567 Test test test
test /bin/zsh linuxways.net testbar 789

Pour remplacer tous les mots "test" par des mots "linux", exécutez la commande suivante :

$ sed -i 's/test/linux/g' test.txt

Sortie :

Si vous n'utilisez pas l'indicateur g, seule la première occurrence du motif de recherche dans chaque ligne est remplacée :

$ sed -i 's/test/linux/' test.txt

Sortie :

Comme vous pouvez le voir, dans l'exemple précédent, le test de sous-chaîne à l'intérieur de la chaîne testbar est également placé. Si vous ne voulez pas remplacer une sous-chaîne dans le motif de recherche, plaçons le motif de recherche entre deux limites de mots \b :

$ sed -i 's/\btest\b/linux/g' test.txt

Sortie :

Pour rendre le modèle de recherche insensible à la casse, utilisons le drapeau I :

$ sed -i 's/test/linux/gI' test.txt

Sortie :

Dans le monde Linux, nous rencontrerons de nombreux cas d'utilisation qui ont les caractères de délimitation dans les fichiers texte. Nous devons utiliser la barre oblique inverse \ pour séparer les caractères délimiteurs. Par exemple, pour remplacer /bin/zsh par /usr/bin/bash, exécutez :

$ sed -i 's/\/bin\/zsh/\/usr\/bin\/bash/g' test.txt

Sortie :

Recherche et remplacement récursifs

Dans de nombreux cas, vous souhaitez rechercher de manière récursive dans des répertoires des fichiers contenant une chaîne spécifique et remplacer cette chaîne dans tous les fichiers.

Par exemple, la commande suivante recherchera et remplacera la chaîne "way" par "road" dans tous les fichiers du répertoire actuel.

$ find . -type f -exec sed -i 's/way/road/g' {} +

Si les noms de fichiers contiennent des espaces, utilisons l'option -print0 :

$ find . -type f -print0 | xargs -0 sed -i 's/way/road/g'

Pour rechercher et remplacer une chaîne uniquement sur des fichiers ayant une extension spécifique, exécutez :

$ find . -type f -name "*.java" -print0 | xargs -0 sed -i 's/way/road/g'

Conclusion

Vous avez parcouru quelques exemples courants d'utilisation de la commande Sed. Rechercher et remplacer une chaîne de texte dans un fichier avec la commande Sed n'est pas compliqué comme vous l'imaginez.

Si vous avez des inquiétudes, veuillez me le faire savoir dans la section des commentaires.


Ubuntu
  1. Recherche de fichiers dans la ligne de commande (Comment faire)

  2. Comment trouver le nombre de fichiers dans un répertoire et des sous-répertoires

  3. Comment utiliser la commande Grep pour rechercher du texte dans des fichiers

  4. Comment remplacer une chaîne dans un ou plusieurs fichiers ?

  5. Comment utiliser la commande Linux find pour rechercher des fichiers

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

Comment renommer des fichiers et des répertoires dans Ubuntu 20.04

Comment installer et utiliser Busybox dans Ubuntu

Comment trouver des fichiers sur la ligne de commande Ubuntu

Comment rechercher et remplacer du texte dans Vim

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