Sed : Rechercher du texte entre deux chaines de caractères
Rien à voir avec l'ancien dieu égyptien (cf wikipedia) , notre sed possède quand même de réels pouvoirs magiques.
Vous rêviez de pouvoir rechercher un bloc de texte précis dans un fichier de configuration de quelques centaines de lignes ? Sed sera votre outil idéal !
Voici la syntaxe de la commande sed pour afficher le texte compris entre "motif1" et "motif2" :
$ sed -n '/motif1/,/motif2/p' /chemin/vers/fichier
La commande p permet l'affichage du résultat et l'option -n permet d'afficher uniquement ce qui nous intéresse.
Voici un exemple pratique, ici je recherche les blocs "VirtualHost" que l'on retrouve dans le fichier de configuration d'un serveur web Apache :
$ sed -n '/<VirtualHost.*>/,/<\/VirtualHost>/p' /etc/httpd/httpd.conf
<VirtualHost 10.1.2.3>
ServerAdmin webmaster@exemple1.com
DocumentRoot /www/docs/exemple1.com
ServerNameexemple1.com
</VirtualHost>
<VirtualHost 10.1.2.3>
ServerAdmin webmaster@exemple2.com
DocumentRoot /www/docs/exemple2.com
ServerName exemple2.com
</VirtualHost>
Sed va bien sûr vous afficher tous les blocs correspondant à notre recherche (ici on a deux blocs "VirtualHost"), dans leur intégralité.
Pour plus d'informations sur la commande, les possibilités de sed et les expressions régulières, cliquer ici.