Récapitulatif de commandes sed.
s/motif/remplacement/options
Voir la substitution réalisée sur la console mais ne pas réaliser le traitement dans le fichier.
sed -e "s/pattern/substitute/g" fichier_travail.txt
Réaliser le traitement dans le fichier.
sed -i "s/pattern/substitute/g" fichier_travail.txt
Substituer l'adresse IP 192.168.1.1 en 192.168.1.254 si il y a un espace ou une tabulation (^I) collé à l'adresse IP.
sed -e s/192.168.1.1[ ^I]/192.168.1.254/g
Suppression des lignes du pattern de debut jusqu'au deuxieme pattern
sed -e "/Creation des comptes/,/tee/d" fichier_travail.txt
Insertion du contenu d'un fichier template a la suite du caractère #!/bin/ksh
sed -e "/\/bin\/ksh/r /data/contenu_a_rajouter.tmpl" /data/fichier_a_parser.txt > /var/www/html/website/fichier_resultat.txt
Il faut ensuite eventuellement ecraser le fichier resultat sur le fichier original via la commande mv.
Sélection pour garder ce qu'on veut et enlever tout le reste
sed -ne '/selection_a_conserver/p' fichier_travail.txt
est symétrique à la commande suivante.
sed -e '/selection_a_rejeter/d' fichier_travail.txt
Exemple
sed -ne '/tee/p' fichier_travail.txt
Suppression de toutes les lignes sauf celles qui contiennent le mot “the”.
sed -e '/the/!d' fichier_travail.txt
Supprimer toutes les lignes blanches ou celles qui débutent par # Commande plus rapide car moins de processus mais moins lisible
sed -e '/^[[:blank:]]*$/d; /^[[:blank:]]*#/d' fichier_travail.txt
Commande identique moins rapide car plus de processus mais plus lisible.
sed -e '/^[[:blank:]]*$/d' fichier_travail.txt | sed -e '/^[[:blank:]]*#/d'
sed -n -e '/^$/!p' fichier_travail.txt
Afficher uniquement les lignes qui ne sont pas vides.
sed -n -e '/^$/!p' fichier_travail.txt
Afficher uniquement la deuxième ligne du fichier.
sed -n -e '2p' fichier_travail.txt
Suppression du retour chariot (\n
) d'un fichier.
sed -e :a -e 'N;s+\n++;ta' fichier_travail.txt
Suppression du dernier caractère d'une expression.
sed -e "s+.\{1\}$++g"
Suppression de la deuxième ligne du fichier
sed -e '2d' ./myfile
Substitution des lettres en majuscules pour leurs appliquer un double crochet.
echo Hello There | sed 's/\([A-Z]\)/[\1]/g'
Résultat.
[H]ello [T]here
Le \1 permet de réutiliser l'expression régulière de gauche dans la partie de droite.
Réorganiser une date par l'utilisation des symboles \1, \2… qui représentent la première expression, la deuxième…
date +"%y-%m-%d" 01-03-30
date +"%y-%m-%d" | sed -e 's/\([0-9]*\)-\([0-9]*\)-\([0-9]*\)/\3-\2-\1/' 30-03-01
Utilisation de la back-reference afin de récupérer la version de Perl utilisée par le système.
Retour de la commande perl -v
.
This is perl, v5.8.8 built for x86_64 ... Copyright 1987-2006, Larry Wall ...
Commande pour récupérer uniquement la version dans le texte.
perl -v | egrep "[0-9]\.[0-9]\.[0-9]" | sed -e "s+^.*\([0-9]\.[0-9]\.[0-9]\).*+\1+"
Sur le sed, on recherche le pattern “numero.numero.numero” et on supprime tout ce qu'il y a à gauche et à droite de l'expression.
Lorsqu'on passe une IP à la commande host, elle renvoie le nom. On se sert de cette commande pour récupérer le nom par substitution avec sed.
host @IP | sed -e "s+^.pointer.\([a-z]|[0-9]\)+\1+g" | sed -e "s+.\{1\}$++g"