====== 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"