Comment insérer une ligne après le match en utilisant `sed` ?

How Insert Line After Match Using Sed



L'une des commandes utiles et puissantes de Linux est la commande sed. Cette commande est utilisée pour effectuer différents types de tâches sous Linux, telles que l'insertion, la mise à jour et la suppression d'un texte ou d'une ligne en fonction de la correspondance. Vous pouvez insérer un texte dans une chaîne ou un fichier de différentes manières en utilisant la commande sed.

Comment insérer une ligne après avoir trouvé une correspondance dans une chaîne ou une ligne est montré dans ce didacticiel.







Insérer une ligne dans la chaîne

Une nouvelle ligne peut être insérée après n'importe quelle valeur de chaîne à l'aide de la commande sed si le modèle défini dans la commande correspond à n'importe quelle partie de la valeur de chaîne.



L'exemple suivant montre comment une nouvelle ligne peut être ajoutée après une valeur de chaîne si une chaîne particulière existe n'importe où dans la valeur de chaîne.



Exemple-1 : Insérer une ligne dans une chaîne après avoir trouvé une correspondance

La commande suivante recherchera inng dans la chaîne, j'aime la programmation, et une ligne de texte, aimez-vous la programmation ? sera inséré après la chaîne si la chaîne de recherche existe.





Ici, le caractère & est utilisé pour insérer la ligne après la chaîne.

$chassèrent « J'aime la programmation. » | sed 's / inng / & Vous aimez programmer ? / '

La sortie suivante montre que inng n'existe pas dans la chaîne et qu'aucune ligne n'est insérée après la chaîne.




La commande suivante recherchera ing. dans la chaîne, j'aime la programmation et cela existe dans la chaîne.

$chassèrent « J'aime la programmation. » | sed 's/ing./& Vous aimez programmer ?/'

La sortie suivante montre que la nouvelle ligne est ajoutée après la chaîne.

Insérer une ligne dans un fichier

Il existe deux façons d'insérer une ligne après qu'une correspondance a été trouvée dans un fichier mentionné ci-dessous. Lorsque la commande sed est utilisée sans l'option -i, le contenu du fichier restera inchangé et la sortie affichera le contenu du fichier avec la nouvelle ligne insérée. Vous devez utiliser l'option -i avec la commande sed pour insérer la nouvelle ligne de façon permanente dans le fichier si le modèle correspondant existe dans le fichier.

A. Utilisation de a dans la commande sed

Le a peut être utilisé dans le motif de recherche du sed pour ajouter une ou plusieurs lignes dans un fichier après la ligne où le motif de recherche correspond ou après un numéro de ligne particulier.

B. Utiliser i dans la commande sed

Le i peut être utilisé dans le motif de recherche de la commande sed pour insérer une ou plusieurs lignes dans un fichier avant la ligne où le motif de recherche correspond.

Insérez des lignes dans un fichier en fonction du motif :

Créez un fichier texte délimité par des tabulations nommé produits.txt avec le contenu suivant pour montrer les utilisations du drapeau ci-dessus dans la commande sed.

produits.txt

Identifiant Nom

01 Crème fouettée

02 Cacao en Poudre

03 Sucre

04 Oeuf

05 Farine

Exemple-2 : Insérez une ligne après un numéro de ligne particulier en utilisant le a

Les commandes suivantes montrent comment une nouvelle ligne peut être ajoutée, après un numéro de ligne particulier du fichier products.txt, en fonction du modèle utilisé dans la commande sed.

Ici, la première commande affichera le contenu existant du fichier. La commande sed ajoutera le texte b01 Poudre à pâte après les deux premières lignes du fichier. La dernière commande permet de vérifier que le contenu du fichier est modifié ou non.

$chatproduits.txt

$sed '2 a b01 Poudre à pâte'produits.txt

$chatproduits.txt

La sortie suivante apparaîtra après l'exécution de la commande ci-dessus.

Exemple-3 : Insérez une ligne après la dernière ligne en utilisant le a

La commande suivante montre comment ajouter une nouvelle ligne après la dernière ligne du fichier. La première et la dernière commande montrent le contenu existant du fichier avant et après l'exécution de la commande sed. Le symbole $ est utilisé dans le modèle de la commande sed pour mentionner la dernière ligne du fichier.

$chatproduits.txt

$sed '$ a b01 Poudre à pâte'produits.txt

$chatproduits.txt

La sortie suivante apparaîtra après l'exécution de la commande ci-dessus.

Exemple-4 : Insérez une ligne n'importe où dans le fichier après avoir fait correspondre un modèle à l'aide de a

La commande sed suivante montre comment une nouvelle ligne peut être ajoutée n'importe où dans le fichier en fonction du modèle de correspondance. Le modèle utilisé dans la commande sed recherchera n'importe quelle ligne commençant par s01 et ajoutera la nouvelle chaîne après. La quatrième ligne du fichier commence par s01 et la nouvelle ligne sera insérée après cette ligne.

$chatproduits.txt

$sed '/^s01.*/a b01 Poudre à pâte'produits.txt

$chatproduits.txt

La sortie suivante apparaîtra après l'exécution de la commande.


La commande sed suivante recherchera n'importe quelle ligne se terminant par Powder et insèrera la nouvelle ligne après. La troisième ligne du fichier se termine par Powder. Ainsi, la nouvelle ligne sera insérée après cette ligne.

$chatproduits.txt

$sed '/Poudre$/a b01 Poudre à pâte'produits.txt

$chatproduits.txt

La sortie suivante apparaîtra après avoir exécuté les commandes ci-dessus.

Exemple-5 : Insérez plusieurs lignes après le motif correspondant à l'aide d'un

La commande sed suivante montre comment ajouter plusieurs lignes dans le contenu d'un fichier en fonction du modèle de correspondance.

Ici, deux lignes seront ajoutées après la troisième ligne, selon le modèle.

$chatproduits.txt

$sed '/^[a-c]/a b01 Levain en poudre b02 Le bicarbonate de soude'produits.txt

$chatproduits.txt

La sortie suivante apparaîtra après avoir exécuté les commandes ci-dessus.

Exemple-6 : Insérez une ligne après avoir fait correspondre un motif à l'aide du I

$chatproduits.txt

$sed '/crème/i b01 Poudre à pâte'produits.txt

$chatproduits.txt

La sortie suivante apparaîtra après avoir exécuté les commandes ci-dessus.

Exemple-7 : Insérer une ligne de façon permanente après le motif correspondant à l'aide de l'option -i

La commande sed suivante montre comment modifier le contenu du fichier de manière permanente. L'option i est utilisée avec la commande sed pour insérer une nouvelle ligne dans le fichier en fonction du modèle.

$chatproduits.txt

$sed -je '/e$/a g01 Ghee'produits.txt

$chatproduits.txt

La sortie suivante apparaîtra après avoir exécuté les commandes ci-dessus.

Conclusion:

Les façons d'insérer deux ou plusieurs lignes dans un fichier en utilisant la commande sed avec motif ont été montrées dans ce tutoriel pour aider le lecteur à appliquer cette commande pour insérer des lignes dans le temporairement ou définitivement en fonction du motif.