sed

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

Comment insérer une ligne après le match en utilisant '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 tutoriel.

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.

$ echo "J'aime programmer." | sed 's/inng/& Vous aimez la programmation?/'

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 il existe dans la chaîne.

$ echo "J'aime programmer." | sed 's/ing./& Vous aimez la programmation?/'

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 motif correspondant existe dans le fichier.

UNE. 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. Utilisation de "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é des produits.SMS avec le contenu suivant pour montrer les utilisations du drapeau ci-dessus dans la commande "sed".

des produits.SMS

ID        Nom
01        Crème fouettée
02        Poudre de cacao
03        Sucre
04        Oeuf
05        Farine

Exemple 2 : insérer 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 des produits.txt, basé sur le 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 Baking powder » 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.

$ produits pour chats.SMS
$ sed '2 a b01\tPoudre à pâte' produits.SMS
$ produits pour chats.SMS

La sortie suivante apparaîtra après avoir exécuté 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 affiche le contenu existant du fichier avant et après l'exécution de la commande "sed". Le symbole « $ » est utilisé dans le motif de la commande « sed » pour mentionner la dernière ligne du fichier.

$ produits pour chats.SMS
$ sed '$ a b01\tPoudre à pâte' produits.SMS
$ produits pour chats.SMS

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

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

La commande "sed" suivante montre comment une nouvelle ligne peut être ajoutée n'importe où dans le fichier en fonction du motif correspondant. 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 celle-ci. La quatrième ligne du fichier commence par "s01", et la nouvelle ligne sera insérée après cette ligne.

$ produits pour chats.SMS
$ sed '/^s01.*/a b01\tProduits en poudre à pâte.SMS
$ produits pour chats.SMS

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


La commande « sed » suivante recherchera toute ligne se terminant par « Poudre » et insère la nouvelle ligne après celle-ci. La troisième ligne du fichier se termine par « Powder ». Ainsi, la nouvelle ligne sera insérée après cette ligne.

$ produits pour chats.SMS
$ sed '/Powder$/a b01\tPoudre à pâte' produits.SMS
$ produits pour chats.SMS

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 de « a »

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

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

$ produits pour chats.SMS
$ sed '/^[a-c]/a b01\tBaking Powder\nb02\tBaking Soda' produits.SMS
$ produits pour chats.SMS

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 »

$ produits pour chats.SMS
$ sed '/crème/i b01\tPoudre à pâte' produits.SMS
$ produits pour chats.SMS

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

Exemple-7 : Insérez 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 motif.

$ produits pour chats.SMS
$ sed -i '/e$/a g01\tGhee' produits.SMS
$ produits pour chats.SMS

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.

Vulkan pour les utilisateurs Linux
Avec chaque nouvelle génération de cartes graphiques, nous voyons les développeurs de jeux repousser les limites de la fidélité graphique et se rappro...
OpenTTD contre Simutrans
Créer votre propre simulation de transport peut être amusant, relaxant et extrêmement attrayant. C'est pourquoi vous devez vous assurer que vous essay...
Tutoriel OpenTTD
OpenTTD est l'un des jeux de simulation d'entreprise les plus populaires. Dans ce jeu, vous devez créer une merveilleuse entreprise de transport. Cepe...