Scripts et motifs `sed` utiles
(github.com)- Afficher une seule ligne
→ sed -n '10p' file.txt
- Remplacer du texte sur toutes les lignes sauf la ligne 5
→ sed '5!/s/foo/bar/' file.txt
- Effectuer un remplacement par expression régulière sur toutes les lignes qui commencent par un caractère précis
→ sed '/^hello/ s/h/H/' file.txt
- Remplacer uniquement à partir de la ligne 5 jusqu'à la dernière ligne
→ sed '5,$ s/foo/bar/' file.txt
- Supprimer les lignes vides
→ sed '/^$/d' file
- Afficher toutes les lignes entre deux expressions régulières
→ sed -nE '/^foo/,/^bar/p' file.txt
- Utiliser un délimiteur personnalisé pour rechercher plus facilement du texte contenant des slashs
→ sed 's_/bin/bash_/bin/sh_' file.txt
- Supprimer les chaînes dupliquées séparées par des espaces (sauf celles répétées trois fois)
→ sed -E 's_([a-zA-Z0-9_]+) \1_\1_ig' f1
- Trouver un motif précis, le modifier, puis enregistrer uniquement les éléments modifiés dans un autre fichier
→ sed 's_foo_bar_w replaced.txt' file.txt
- Effectuer plusieurs remplacements en même temps
→ sed -e 's_foo_bar_' -e 's_hello_HELLO_' file.txt
- Supprimer tous les commentaires entre deux mots-clés et insérer une ligne vide
→ sed -E '/start/,/end/ s/#.*//' file.txt
- Supprimer tous les commentaires qui commencent par #
→ sed -E '/^#/d' f1
- Afficher uniquement jusqu'à l'apparition d'un motif précis
→ sed '/start/q' file.txt
- Insérer un fichier après une ligne précise
→ sed '5 r newfile.txt' file.txt
- Ajouter du texte après la ligne qui correspond à une expression régulière précise
→ sed '/foo/a\AFTER FOO' file.txt
- Remplacer la ligne correspondant à une expression régulière précise
→ sed '/foo/c\FOO IS CHANGED' file.txt
- Enregistrer tous les commentaires qui commencent par # dans un autre fichier
→ sed -E '/^#/w comments.txt' file.txt
- Afficher chaque deuxième ligne (une ligne sur deux, modifiable en 3/4, etc.)
→ sed -n '1~2p' file.txt
- Modifier le fichier directement tout en créant une sauvegarde
→ sed -i.bak 's/hello/HELLO/' file.txt
- Ajouter deux lignes vides après une correspondance d'expression régulière
→ sed -E '/^#/G G' file.txt
1 commentaires
Le fait qu’on puisse utiliser d’autres caractères que le slash comme délimiteur est vraiment une astuce essentielle.
On a assez souvent besoin d’inclure des slashes, par exemple quand on change l’URL d’un dépôt apt.