sed

Comment remplacer la dernière occurrence en utilisant 'sed'

Comment remplacer la dernière occurrence en utilisant 'sed'
La commande 'sed' est utilisée sous Linux pour divers types d'opérations de texte, telles que l'insertion, la suppression, le remplacement, etc. Différents types de tâches de remplacement peuvent être effectués en utilisant facilement la commande 'sed'. Toute tâche de remplacement peut être effectuée en fonction du texte ou du modèle de recherche. Le texte ou le motif recherché peut apparaître plusieurs fois dans la chaîne ou dans un fichier où la recherche sera effectuée. Comment vous pouvez remplacer la dernière occurrence du texte ou du motif recherché a été montré dans ce didacticiel.

Remplacez la dernière occurrence du texte dans une chaîne :

Cette section montre comment la dernière occurrence du motif de recherche dans une chaîne peut être remplacée à l'aide de la commande 'sed'.

Exemple-1 : Remplacer la dernière occurrence d'un mot en fonction du modèle

La commande 'sed' suivante recherchera le mot 'PHP' dans la chaîne et remplacez le mot recherché par le mot 'AngularJS' si le mot existe dans la chaîne.

$ echo "Java PHP Bash Python JavaScript PERL PHP Laravel" |
sed 's/\(.*\)PHP/\1AngularJS/'

La sortie suivante apparaîtra après l'exécution de la commande. Ici, le mot 'PHP' existe deux fois dans la chaîne, et la dernière occurrence a été remplacée par le mot' AngularJS'.

Exemple 2 : remplacer la dernière occurrence du modèle basé sur les chiffres

La commande 'sed' suivante recherchera n'importe quel chiffre dans la chaîne et remplacera le dernier chiffre par le nombre 9.

$ echo "La première valeur du compteur 2. La deuxième valeur du compteur 4" |
sed 's/\(.*\)[0-9])*/\19/'

La sortie suivante apparaîtra après l'exécution de la commande. Ici, le chiffre apparaît deux fois dans la chaîne, et le dernier chiffre, 4, a été remplacé par le numéro 9.

Exemple-3 : Remplacer le dernier chiffre d'un nombre en fonction d'un modèle

La commande 'sed' suivante remplacera le dernier chiffre existant dans la valeur de chaîne par la valeur par double zéro (0 0).

$ echo "Le prix du produit est de 500 $." | sed 's/\(.*\)[0-9]/\100/'

La sortie suivante apparaîtra après l'exécution de la commande. Ici, 500 existe dans la valeur de chaîne. Ainsi, selon la commande de remplacement, le dernier zéro de 500 a été remplacé par deux double zéro, et la valeur remplacée est 5000.

Exemple-4 : Remplacer la dernière occurrence d'un mot par un autre mot

La commande 'sed' suivante recherchera le mot 'Juin' dans la chaîne et remplacez la dernière occurrence du mot par la valeur, 'Mai'.

$ printf "%s\n" janv fév juin avr juin déc | tr '\n' " |
sed 's/\(.*\)Juin/\1Mai/' | tr " '\n'

La sortie suivante apparaîtra après l'exécution de la commande. Ici, le mot 'Juin' existe deux fois dans la chaîne, et la dernière occurrence a été remplacée par le mot 'Mai'.

Remplacer la dernière occurrence d'un texte dans un fichier :

Créer un fichier texte nommé Ventes.SMS avec le contenu suivant pour tester la commande 'sed' utilisée dans cette partie du tutoriel pour remplacer la dernière occurrence d'un texte basé sur le modèle.

Ventes.SMS

Mois Année Montant
Janvier 2018 $ 200000
Mars 2019 300000 $
Avril 2019 $ 150000
Mars 2020 $ 350000
Mai 2019 $ 210000
Janvier 2020 240 000 $

Exemple-5 : Remplacer la dernière occurrence d'un mot par un autre mot

La commande 'sed' suivante recherchera le mot 'Janvier' dans le fichier et remplacez la dernière occurrence de ce mot par le mot, 'Juillet'.

$ chat Ventes.SMS
$ sed '$ s/Janvier/Juillet/' Ventes.SMS

La sortie suivante apparaîtra après l'exécution des commandes. Le mot 'Janvier' apparaît deux fois dans le fichier. La dernière occurrence qui existe dans le 7e ligne du fichier a été remplacée par le mot 'Juillet' dans la sortie.

Exemple-6 : Remplacer la dernière occurrence d'un nombre par un autre nombre

'tac' la commande est utilisée pour inverser le contenu du fichier. 'tac' La commande est utilisée avec la commande 'sed' dans la commande suivante pour remplacer la dernière occurrence de '2019' avec le mot, '2017'.

$ chat Ventes.SMS
$ tac Ventes.txt | '0,/2019/s/2019/2017/' | tac

La sortie suivante apparaîtra après l'exécution des commandes. Ici, la valeur de l'année, '2019' apparaît trois fois dans le fichier. La première, 'tac' commande a inversé le contenu du fichier et envoyé la sortie dans le 'sed' commande pour remplacer la première occurrence de '2019' qui est la dernière occurrence dans le fichier par la valeur de l'année, '2017'. Après le remplacement, la sortie a été envoyée au 'tac' commande pour inverser à nouveau la sortie. De cette façon, la dernière occurrence de '2019' a été remplacé par la valeur, '2017'.

Exemple-7 : Remplacer tout d'une ligne en fonction de la dernière occurrence d'un mot

Ce qui suit 'sed' La commande remplacera la ligne par un texte délimité par une tabulation (\t) où la ligne commence par la chaîne 'Mar' pour la dernière fois dans le fichier.

$ chat Ventes.SMS
$ tac Ventes.txt | sed '0,/^Mar.*/s/^Mar.*/Juillet\t\t2018\t$ 400000/' | tac

La sortie suivante apparaîtra après l'exécution des commandes. Deux lignes du fichier commencent par la chaîne, 'Mar', et la dernière occurrence de cette chaîne apparaît dans le 5e ligne. La première 'tac' La commande a été utilisée pour inverser le contenu du fichier et a envoyé la sortie au 'sed' commander. 'sed' la commande a remplacé la ligne par un texte, 'Juillet 2018 $ 400000' où la chaîne de recherche a été trouvée pour la première fois. La sortie de le 'sed' la commande a été envoyée au 'tac' commande à nouveau pour inverser la sortie qui est le contenu principal du fichier.

Conclusion:

La commande 'sed' peut être utilisée pour remplacer n'importe quelle partie d'une chaîne ou d'une ligne du fichier de différentes manières en utilisant des modèles d'expression régulière. Ce tutoriel a montré les moyens de remplacer la dernière occurrence du texte recherché dans une chaîne ou un fichier en utilisant plusieurs commandes 'sed'. Comment la commande 'tac' peut être utilisée avec la commande 'sed' pour remplacer la dernière occurrence du texte recherché a également été montrée dans ce tutoriel. Mais toutes les commandes utilisées ici généreront temporairement la sortie. Vous devez utiliser l'option '-i' avec la commande 'sed' pour modifier le contenu du fichier de manière permanente en fonction du modèle.

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...