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