table des matières
2.1 Nouveau contenu --- Commande a
2.2 Remplacer le contenu --- commande c
2.3 Supprimer le contenu --- supprimer la ligne spécifiée
2.4 Insérer du contenu --- commande i
2.5 Remplacer le contenu --- Commandes
La commande Linux sed utilise des scripts pour traiter les fichiers texte ligne par ligne. C'est une commande souvent utilisée dans le traitement des scripts. Avec awk et grep, elle est appelée les Trois Mousquetaires de Linux. Ce qui suit sera décrit avec des exemples.
1. Grammaire
sed [options] [commande de script] [fichier] ...
1.1 Options communes
-e script, --expression = script: traite le contenu d'entrée avec le script spécifié dans l'option;
-f fichier-script, --file = fichier-script: Traite le contenu d'entrée avec le fichier-script spécifié dans l'option;
1.2 Commandes courantes
a : Nouveau contenu, ajoutez du texte de contenu dans la ligne spécifiée;
c : remplacer le contenu, utiliser du texte pour remplacer le contenu de la ligne spécifiée;
d : supprimer le contenu, supprimer la ligne spécifiée;
i : insérer du contenu, insérer du texte dans la ligne spécifiée;
s : remplacer le contenu, vous pouvez remplacer le contenu spécifié;
Exemple: les 15 premières lignes du fichier / etc / passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
1.3 Principe de commande
Sed traite les données d'entrée ligne par ligne, en traitant une ligne à chaque fois, qui peut être divisée en trois étapes:
1. Stockez une copie de la ligne en cours de traitement dans un tampon temporaire (appelé "espace de mode");
2. Traitez les données de la mémoire tampon actuelle via la commande sed;
3. Une fois les données traitées, les données sont envoyées par défaut au terminal, puis la ligne suivante est traitée et toutes les données ont été traitées.
Les données source ne sont pas modifiées par défaut.
2. Exemples
2.1 Nouveau contenu --- Commande a
sed '4a ajout du texte' passwd
[root@localhost ~]# sed '4a addition some text' passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
addition some text
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#
Dans l'exemple ci-dessus, 4a signifie insérer du contenu après la quatrième ligne, le texte suivant est le contenu d'entrée et passwd est le fichier d'entrée.
2.2 Remplacer le contenu --- commande c
sed '2c ajout du texte' passwd
[root@localhost ~]# sed '2c addition some text' passwd
root:x:0:0:root:/root:/bin/bash
addition some text
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#
Dans l'exemple ci-dessus, 2c signifie remplacer le contenu de la deuxième ligne, et le contenu suivant est le contenu à remplacer.
2.3 Supprimer le contenu --- supprimer la ligne spécifiée
sed '2d' passwd
[root@localhost ~]# sed '2d' passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#
sed '2,5d' passwd
[root@localhost ~]# sed '2,5d' passwd
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#
sed '/ ^ bin / d' passwd
[root@localhost ~]# sed '/^bin/d' passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#
Dans les trois exemples ci-dessus, vous pouvez supprimer en spécifiant une ligne, ou en spécifiant un intervalle, ou en spécifiant un contenu spécifique à supprimer.
2.4 Insérer du contenu --- commande i
sed '1i ajout de texte' passwd
[root@localhost ~]# sed '1i addition some text' passwd
addition some text
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#
Le contenu inséré est différent du contenu nouvellement ajouté. L'insertion est insérée avant la ligne spécifiée et le contenu nouvellement ajouté est inséré après la ligne spécifiée.
2.5 Remplacer le contenu --- Commandes
sed 's / root / ROOT / g' passwd
[root@localhost ~]# sed 's/root/ROOT/g' passwd
ROOT:x:0:0:ROOT:/ROOT:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/ROOT:/sbin/nologin
[root@localhost ~]#
Dans les exemples ci-dessus, le contenu spécifié peut être remplacé par des commandes, tout comme le remplacement dans vim.
Trois, résumé
Ce qui précède n'est qu'une liste des usages courants de sed sous forme d'exemples, il y a de plus en plus de contenu en profondeur, et je l'introduirai quand j'aurai le temps.