La page de man de sed.
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 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
Dans un script, j'avais besoin de supprimer une ou plusieurs lignes contenant “null” :
sed -i '/null/d' /tmp/$FILE