GNU/Linux >> Tutoriels Linux >  >> Linux

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

Si vous parvenez à jeter un coup d'œil plus profond à l'intérieur de l'écosystème de l'environnement du système d'exploitation Linux, vous découvrirez que ses commandes intégrées sont suffisantes pour résoudre la plupart de nos problèmes informatiques.

L'un de ces problèmes est la nécessité de rechercher et de remplacer du texte, un mot ou une chaîne dans un fichier, en particulier lorsque vous êtes dans un environnement de serveur. Une solution à ce problème vous permet de gérer les problèmes persistants tels que la mise à jour de "/etc/apt/sources.list ” après une mise à niveau réussie du système Linux.

Création du fichier texte de test sous Linux

Créez un fichier texte avec un nom comme "test.txt ” et remplissez-le avec du texte, un mot ou une chaîne de caractères. Laissez ce fichier être sur le même chemin que votre instance de terminal.

$ nano test.txt
OR
$ vi test.txt 

Nous utiliserons la commande cat pour noter de manière flexible les modifications apportées à notre fichier de test créé.

$ cat test.txt

Utiliser Sed pour rechercher et remplacer du texte, un mot ou une chaîne dans un fichier

La puissance de cet éditeur de flux réside dans sa facilité à accomplir la transformation de base des flux d'entrée. La commande sed offre une approche rapide, facile et intemporelle pour rechercher et remplacer du texte, des mots ou des modèles de chaîne ciblés dans un fichier.

Rechercher et remplacer les premières occurrences de texte, mot ou chaîne dans le fichier

À partir de notre fichier de test créé, nous allons mettre à jour toutes les instances du mot "LinuxShellTips " avec l'alternative " ce site ”. La syntaxe de la commande sed que nous utiliserons pour accomplir cette tâche simple est la suivante :

$ sed -i 's/[THE_OLD_TERM]/[THE_NEW_TERM]/' [TARGETED_FILE] 

En référence à la commande sed ci-dessus l'utilisation et la syntaxe, nous pouvons remplacer les "LinuxShellTips" de notre fichier de test " terme avec " ce site ” terme comme suit :

$ sed -i 's/LinuxShellTips/this site/' test.txt

Nous pouvons maintenant utiliser la commande cat pour prévisualiser les modifications proposées ci-dessus dans notre fichier de test afin de noter si des modifications substantielles ont eu lieu.

$ cat test.txt

Comme vous pouvez le voir, les deux premières occurrences du mot "LinuxShellTips » ont été remplacés par la phrase « ce site ”.

Rechercher et remplacer toutes les occurrences de texte, mot ou chaîne dans le fichier

Bien que la commande ci-dessus ait remplacé tous les modèles de mots ciblés dans notre fichier de test, son utilisation a tendance à être sélective dans la plupart des cas. La commande fonctionne mieux pour les petits fichiers car, dans les gros fichiers, seules les premières occurrences d'un modèle de mot ciblé peuvent bénéficier de son "rechercher et remplacer ’ prouesse.

Pour trouver et remplacer toutes les occurrences d'un modèle de mot dans n'importe quel fichier modifiable, vous devez adhérer à la commande sed suivante syntaxe.

$ sed -i 's/[THE_OLD_TERM]/[THE_NEW_TERM]/g' [TARGETED_FILE]    

Comme vous l'avez noté, le 'g' dans la syntaxe de commande de recherche et de remplacement ci-dessus agit comme une variable globale afin que toutes les occurrences globales d'un terme dans un fichier ciblé soient prises en compte.

$ sed -i 's/this site/LinuxShellTips/g' test.txt

La commande ci-dessus trouve toutes les occurrences globales du terme "ce site " et le remplace par le terme "LinuxShellTips ”.

Utiliser Awk pour rechercher et remplacer du texte, un mot ou une chaîne dans un fichier

Si vous connaissez l'utilitaire de ligne de commande awk, vous savez que ses puissantes métriques de langage de script en font un pro du traitement de texte. Les administrateurs système Linux et les utilisateurs professionnels trouvent cet outil efficace pour l'extraction de données et la création de rapports.

La commande awk La syntaxe d'une simple opération de recherche et de remplacement ressemble à l'extrait de code suivant :

$ awk '{gsub("[THE_OLD_TERM]","[THE_NEW_TERM]"); print}' [TARGETED_FILE]

Dans la syntaxe ci-dessus, awk remplacera THE_OLD_TERM à partir de THE_NEW_TERM dans le TARGETED_FILE et imprimez le contenu du fichier résultant sur le terminal système.

Adoptons une approche pratique :

$ awk '{gsub("Linux","ubuntu"); print}' test.txt

Avec les fonctionnalités dynamiques de sed et mal à l'aise outils de commande, vous devez maintenant rechercher, remplacer et écraser des modèles de texte, de mot ou de chaîne dans un fichier ciblé. Ces outils donnent à l'utilisateur du système la flexibilité nécessaire lorsqu'il se trouve sur une interface de ligne de commande.


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

  2. Comment trouver des parenthèses sans correspondance dans un fichier texte ?

  3. trouver le texte correspondant et remplacer la ligne suivante

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

  5. Comment trouver l'index d'un mot dans une chaîne en bash ?

Comment comparer et fusionner des fichiers texte sous Linux

Comment trouver une chaîne dans un fichier sous Linux

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

Comment trouver des fichiers contenant une chaîne de texte spécifique sous Linux

Comment rechercher et remplacer du texte dans Vim

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