====== Récapitulatif sed ======
Récapitulatif de commandes sed.
====== Substitution ======
===== Général =====
s/motif/remplacement/options
===== Exemples subtitutions =====
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"
===== Traitement =====
Suppression de la deuxième ligne du fichier
sed -e '2d' ./myfile
===== La back-reference ou référence inversée =====
==== Substitution minuscule/majuscule ====
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éorganisation date ====
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
==== Récupération de la version de Perl ====
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.
==== Récupération nom machine avec host ====
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"