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"