Wiki CgX

Parce que j'ai un cerveau, mais pas trop.

Outils pour utilisateurs

Outils du site


it:linux-utilitaires:sed

sed

Remplacer une chaîne par une autre dans un fichier

sed -i 's/old/new/g' file.txt

-i = in-place (Le fichier est modifié sans en créer un autre)

En préfixe :

  • s = substitute (remplacer)

La chaîne :

  • old = L'ancienne regexp.
  • new = La nouvelle regexp.

En suffixe :

  • g = global (remplace TOUTES les occurences)
  • i = insensible à la casse (pas utilisé dans cet exemple)

Le fichier à traiter :

  • file.txt

Ajouter quelque chose au début de chaque ligne

sed 's/^/quelquechose /' file.txt

Ajouter quelque chose à la fin de chaque ligne

sed 's/$/ quelquechose/' file.txt

Réutiliser la chaine recherchée dans la chaîne remplacée

sed 's/coucou/& toi/' file.txt

Tronquer des fichers selon le(s) numéro(s) de ligne

Supprimer une ligne

Supprime la ligne 35, puis la ligne 3 :

sed -i '35d' file.txt
sed -i '3d' file.txt

Attention, si il y a plusieurs lignes à supprimer, on commence par la plus grande, pour ne pas décaler le reste :-P

Supprimer une fourchette de lignes

Supprime les lignes 3 à 35 :

sed -i '3,35d' file.txt

Inverser le comportement

Supprime toutes les lignes, sauf de 3 à 35 :

sed -i '3,35!d' file.txt

Supprime toutes les lignes, sauf la 35 :

sed -i '35!d' file.txt

Supprimer les lignes correspondant a une recherche

sed -i '/nonpastoi/d' file.txt

Supprimer les lignes vides

sed -i '/^$/d' file.txt

Utiliser autre chose que des slashs comme séparateur

Ben oui, on peut, avec @ par exemple :

sed -i 's@old@new@g' file.txt
it/linux-utilitaires/sed.txt · Dernière modification : 08 Feb 2023 :: 09:30 de CgX