28 points par xguru 2021-11-15 | 1 commentaires | Partager sur WhatsApp
  • 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

 
tribela 2021-11-15

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.