Sed - Tutoriel linux - Commandes

Mise à jour : Debian 11.2 - Bullseye

Références :

Sommaire

1 - Sed - Substitution

1.1 - Principe

$ cat <fichier> |sed <option> '<sélection_lignes> s/motif/remplacement/flags'

où flags sont des paramètres optionnels

$ cat test
Ligne 1 UID UID
Ligne 2 uuid
Ligne 3 uuuid
$ cat test |sed 's/UID/UUID/'
Ligne 1 UUID UID
Ligne 2 uuid
Ligne 3 uuuid

1.2 - Affichage des seules lignes modifiées

$ cat test |sed -n 's/UID/UUID/p'
Ligne 1 UUID UID

1.3 - Insensibilité à la casse

$ cat test |sed -n 's/uid/ABC/i;p'
Ligne 1 ABC UID
Ligne 2 uABC
Ligne 3 uuABC

1.4 - Sélection des occurrences

$ cat test |sed 's/UID/UUID/'
Ligne 1 UUID UID
Ligne 2 uuid
Ligne 3 uuuid
$ cat test |sed 's/UID/UUID/2'
Ligne 1 UID UUID
Ligne 2 uuid
Ligne 3 uuuid
$ cat test |sed 's/UID/UUID/g'
Ligne 1 UUID UUID
Ligne 2 uuid
Ligne 3 uuuid
$ cat test |sed 's/UID/UUID/2g'
Ligne 1 UID UUID
Ligne 2 uuid
Ligne 3 uuuid

1.5 - Reprise du motif : &

$ cat test |sed 's/Ligne ./***&***/'
***Ligne 1*** UID UID
***Ligne 2*** uuid
***Ligne 3*** uuuid

2 - Sed - Affichage

$ cat test| sed ''
Ligne 1
Ligne 2 uuid
Ligne 3
$ cat <file> |sed '<numéro_ligne> q'
$ cat <file> |sed '/motif/ q'

$ cat test |sed '2 q'
Ligne 1
Ligne 2 UUID

$ cat test |sed '/UUID/ q'
Ligne 1
Ligne 2 UUID
$ cat <file> |sed '<sélection_lignes> l'

$ cat test|sed -n '1,2 l'
Ligne 1 $
Ligne 2 uuid$
$ cat test |sed '<sélection_lignes> ='

$ cat test |sed '='
1
Ligne 1
2
Ligne 2 uuid
3
Ligne 3
$ cat test |sed -n '<sélection_lignes> ='


$ cat test|sed -n '/uuid/='
2
$ cat test|sed -n '$='
3

3 - Sed - Manipulation de lignes

$ cat <fichier> |sed '<sélection_lignes> d'

$ cat test |sed '2 d'
Ligne 1
Ligne 3

$ cat test |sed '2,3 d'
Ligne 1
$ cat <fichier> |sed '<sélection_lignes> p'

$ cat test |sed '2 p'
Ligne 1
Ligne 2 UUID
Ligne 2 UUID
Ligne 3

$ cat test |sed -n '2,3 p'
Ligne 2 uuid
Linge 3

$ cat test |sed -n '/Ligne [13]/ p'
Ligne 1
Ligne 3
$ cat <fichier> |sed '<sélection_lignes> i <ligne_à_insérer>'

$ cat test |sed '2 i Insertion nouvelle ligne avant ligne 2'
Ligne 1
Insertion nouvelle ligne avant ligne 2
Ligne 2 UUID
Ligne 3
$ cat <fichier> |sed '<sélection_lignes> a <ligne_à_ajouter>'

$ cat test |sed '1,2 a Ajout nouvelle ligne après lignes 1 et 2'
Ligne 1
Ajout nouvelle ligne après lignes 1 et 2
Ligne 2 uuid
Ajout nouvelle ligne après lignes 1 et 2
Ligne 3
$ cat <fichier> |sed '<sélection_lignes> r <chemin_fichier_inséré>'

$ cat test |sed '2 r snipet'
$ cat <fichier> |sed '<sélection_lignes> c <ligne_de_remplacement>'

$ cat test |sed '/uuid/ c Nouvelle ligne 2'
Ligne 1
Nouvelle ligne 2
Ligne 3