Comment remplacer plusieurs lignes à l'aide de la commande `sed`

How Replace Multiple Lines Using Sed Command



Parfois, il faut remplacer plusieurs lignes d'un fichier par un caractère ou un texte particulier. Différentes commandes existent sous Linux pour remplacer plusieurs lignes d'un fichier. La commande `sed` est l'une d'entre elles pour effectuer ce type de tâche. La forme complète de `sed` est Steam Editor, et il est principalement utilisé pour lire et convertir le texte de différentes manières en utilisant une expression régulière. Comment cette commande peut être utilisée pour remplacer les multiples lignes d'un fichier de différentes manières est expliquée dans ce didacticiel.

Aide-mémoire « sed » couramment utilisé :

Les caractères les plus couramment utilisés dans la commande `sed` sont expliqués dans le tableau suivant.







Personnage But
à Il est utilisé pour ajouter du contenu.
b Il est utilisé pour ramifier le contenu.
c Il est utilisé pour modifier le contenu.
Il est utilisé pour supprimer une ligne d'un fichier.
Il est utilisé pour supprimer la première ligne d'un fichier.
g Il avait l'habitude de copier à partir du texte d'attente.
g Il est utilisé pour ajouter du texte d'attente.
h Il est utilisé pour copier dans le texte d'attente.
H Il est utilisé pour ajouter au texte d'attente.
je Il est utilisé pour l'insertion.
je Il est utilisé pour imprimer la ligne de substitution.
m Il est utilisé pour passer à la ligne suivante.
N Il est utilisé pour ajouter la ligne d'entrée suivante.
p Il sert à imprimer.
P Il est utilisé pour imprimer la première ligne.
Quel Il sert à arrêter.
Q Il est utilisé pour arrêter immédiatement.
r Il est utilisé pour lire le fichier.
R Il est utilisé pour lire la ligne du fichier.
s Il sert à remplacer.
t Il est utilisé pour tester la substitution.
T Il est utilisé pour tester l'absence de substitution.
dans Il est utilisé pour écrire dans le fichier.
DANS Il est utilisé pour écrire une ligne dans le fichier.
X Il est utilisé pour échanger des motifs et tenir.
et Il sert à traduire.
Avec Il est utilisé pour effacer la ligne.
'=' Il est utilisé pour imprimer le numéro de ligne.

Remplacez plusieurs lignes en utilisant la commande `sed` du terminal :

La façon dont la commande `sed` peut être utilisée pour remplacer les multiples lignes d'un fichier depuis le terminal est montrée dans cette partie de ce tutoriel. Créer un fichier nommé sed.txt avec le contenu suivant testez les commandes de cette partie.



sed.txt



La forme complète de sed est un éditeur de flux.





C'est un utilitaire Unix qui est utilisé pour lire et convertir le texte dans un format différent.

Il a été développé par Lee E. McMahon.



Il est utilisé pour le traitement de texte.

Il prend en charge les expressions régulières.

Exemple 1 : remplacer deux lignes consécutives

La commande `sed` suivante remplacera deux lignes consécutives par une autre ligne. Ici, l'option -z est utilisée pour remplacer les lignes consécutives par des données nulles avant d'ajouter le texte de remplacement. Selon le commandement, les 3rdet 4eles lignes du fichier seront remplacées par le texte, « C'est un outil très utile » .

$chatsed.txt
$sed -Avec 's/Il a été développé par Lee E. McMahon. Il est utilisé pour le texte
traitement./C'est un outil très utile./'
sed.txt

La sortie suivante apparaîtra après l'exécution des commandes.

Exemple 2 : remplacer plusieurs lignes en fonction de la correspondance et du drapeau global

La commande `sed` suivante remplacera toutes les lignes commençant par le mot, 'Ce' par le mot ' Cette ligne est remplacée '.

$chatsed.txt
$sed 's/^It.*/Cette ligne est remplacée/g'sed.txt

La sortie suivante apparaîtra après l'exécution des commandes. Trois lignes contiennent le mot ‘ Ce ' dans le fichier. Ainsi, ces lignes ont été remplacées par le texte de remplacement.

Exemple-3 : Remplacer plusieurs lignes en fonction de la correspondance et de la commande de la ligne suivante

La commande `sed` suivante remplacera le mot,' est ' par le mot ' était ' avec la commande de la ligne suivante, 'n'.

$chatsed.txt
$sed ' {n;/est/ {s/est/était/}}'sed.txt

La sortie suivante apparaîtra après l'exécution des commandes. Ici, 'est' existe dans le 2sdet 4elignes du fichier, et ces lignes sont modifiées par le mot 'était' .

Remplacez plusieurs lignes en créant le fichier de script `sed` :

Dans les exemples précédents, les commandes `sed` ont été exécutées depuis le terminal. Mais c'est un langage de script, et si le script contient plusieurs instructions, il est préférable de créer un fichier sed avec le script. Créer un fichier texte nommé étudiants.txt avec le contenu suivant dans lequel le script `sed` sera appliqué.

étudiants.txt

ID: 111045
Nom : Robert
Département : CSE
Lot : 35

ID: 111876
Nom : Joseph
Département : BBA
Lot : 27

ID: 111346
Nom : Guillaume
Département : CSE
Lot : 45

ID: 111654
Nom : Charles
Département : EEE
Lot : 41

ID: 111346
Nom : Jean
Département : CSE
Lot : 25

ID: 111746
Nom : Thomas
Département : CSE
Lot : 15

Exemple-4 : Remplacer plusieurs lignes d'un fichier à l'aide du fichier de script `sed`

Créer un fichier sed nommé remplacer.sed avec le contenu suivant pour remplacer les lignes multiples en fonction du modèle de recherche. Ici, le mot ‘ CSE ' sera recherché dans le fichier texte, et si la correspondance existe, il recherchera à nouveau les numéros 35 et 15. Si la deuxième correspondance existe dans le fichier, elle sera alors remplacée par le numéro 45.

remplacer.sed

/CSE/ {
p;n;
/35/ {
s/35/Quatre cinq/;
p;d;
}
/quinze/ {
s/quinze/55/;
p;d;
}
}
p;

Exécutez la commande suivante pour vérifier le contenu existant du fichier. « CSE » est apparu quatre fois dans le fichier texte. 35 et 15 existent à deux endroits.

$chatétudiants.txt

La commande suivante remplacera le contenu des multiples lignes basées sur le script sed.

$sed -n -Freplace.sed étudiants.txt

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

Conclusion

Différentes manières de remplacer plusieurs lignes ou le contenu de plusieurs lignes à l'aide de la commande `sed` ont été présentées dans ce didacticiel. Comment le script `sed` peut être exécuté à partir d'un fichier sed est également montré dans ce tutoriel. J'espère que ce tutoriel aidera le lecteur à remplacer plusieurs lignes de n'importe quel fichier en utilisant la commande `sed`.