1.4 SED
Substitution sur tous le fichier
sed s/$OLD_CHAINE/$NEW_CHAINE/ $FICHIER
Pour le faire direct dans un nouveau fichier
sed s/toto/papa/ < tutu > toto
ou
sed -i s/toto/papa/ toto
Modifier juste une ligne précise
sed '1 s/toto/papa/' tutu
Modifier un range de ligne
sed '2,5 s/toto/papa/' tutu
Remplacer un caratère par un saut de ligne (UNIX):
sed 's/$foo/\^J/g' $FILE
le ^J s'obtient en fesant CTRL+V CTRL+J
Remplacer un caratère par un saut de ligne (WINDOWS):
sed 's/$foo/\^M/g' $FILE
Remplacer les sauts de ligne par un espace (UNIX)
sed ':a;N$!ba;s/\n/ /g'
le ^M s'obtient en fesant CTRL+V CTRL+M
Supprimer les lignes vide
sed '/^$/d'
Il n'est pas obligatoire d'utiliser « / » comme délimiteur. Les caractères « #, - . ; » (liste non exhaustive) peuvent également servir pour éviter l'accumulation d'anti-slash de « protection » rendant la syntaxe peu lisible. Les commandes suivantes sont équivalentes:
s/\/un\/chemin\/vers/\/une\/autre\/chaine/ s#/un/chemin/vers#/une/autre/chaine#
sed 'N;s/\n / /g;P;D;'
qui peut se décomposer de la manière suivante (les ; permettent de séparer les commandes) :
N;s/\n / /g;P;D; N lit (aussi) la ligne suivante s/\n / /g effectue la substitution... /\n / ... d'un saut de ligne suivi d'un espace... / / ... par un simple espace... g ... pour toutes les occurrences P retourne le résultat du traitement D efface ce qui reste afin de ne pas afficher la ligne suivante deux fois
Suppression de la 3ème ligne
sed '3d' mon_fichier.txt
Suppression de la ligne contenant la chaîne "awk"
sed '/awk/d' mon_fichier.txt
Suppression de la dernière ligne
sed '$d' mon_fichier.txt