====== La commande "sed" ======
La page de [[man de sed]].
===== Exemples =====
==== Noms de domaines ====
J'essaye d'isoler une partie d'un domaine pour ne récupérer que la partie "principale". Je veux pouvoir enlever ''http'', ''https'', ''www'' et toute la fin ( ''.be'', ''.com'', ...) :
$ cat domaines.txt
http://montest.be/
https://www.montest.be
http://monautretest.com/blabla
test.fr
On peut y aller par étapes :
$ cat domaines.txt | sed -e "s/http\:\/\///" -e "s/https\:\/\///" -e "s/www\.//" -e "s/\..*//"
montest
montest
monautretest
test
Une astuce de [[https://lord.re/|Lord]] : On peut aussi utiliser un autre séparateur que "/" ce qui, peut-être, clarifie un peu la commande. Exemple avec "#" :
$ sed -e "s#http\:\/\/##" -e "s#https\:\/\/##" -e "s#www\.##" -e "s#\..*##" domaines.txt
montest
montest
monautretest
test
On est même plus obliger d'échapper les "/" :
$ sed -e "s#http\://##" -e "s#https\://##" -e "s#www\.##" -e "s#\..*##" domaines.txt
montest
montest
monautretest
test
Pour supprimer seulement ''http(s)'' :
$cat domaines.txt | sed -e "s/\(http\|https\)\:\/\///"
montest.be/
www.montest.be
monautretest.com/blabla
test.fr
==== Supprimer des lignes dans un fichier ====
Dans un script, j'avais besoin de supprimer une ou plusieurs lignes contenant "null" :
sed -i '/null/d' /tmp/$FILE