« Sed (Stream EDitor) » : différence entre les versions

Aucun résumé des modifications
Aucun résumé des modifications
 
Ligne 26 : Ligne 26 :
=== '''Exemple simple''' : ===
=== '''Exemple simple''' : ===


<syntaxhighlight lang="bash">sed 's/foo/bar/' fichier.txt  # Remplace "foo" par "bar" dans chaque ligne</syntaxhighlight>
<syntaxhighlight lang="bash" copy>sed 's/foo/bar/' fichier.txt  # Remplace "foo" par "bar" dans chaque ligne</syntaxhighlight>


-----
-----
Ligne 87 : Ligne 87 :
=== '''Remplacer du texte''' (substitution) ===
=== '''Remplacer du texte''' (substitution) ===


<syntaxhighlight lang="bash">sed 's/ancien/nouveau/g' fichier.txt  # Remplace toutes les occurrences (`g` = global)</syntaxhighlight>
<syntaxhighlight lang="bash" copy>sed 's/ancien/nouveau/g' fichier.txt  # Remplace toutes les occurrences (`g` = global)</syntaxhighlight>
<span id="supprimer-des-lignes"></span>
<span id="supprimer-des-lignes"></span>
=== '''Supprimer des lignes''' ===
=== '''Supprimer des lignes''' ===


<syntaxhighlight lang="bash">sed '/motif/d' fichier.txt  # Supprime les lignes contenant "motif"
<syntaxhighlight lang="bash" copy>sed '/motif/d' fichier.txt  # Supprime les lignes contenant "motif"
sed '3d' fichier.txt        # Supprime la 3ème ligne</syntaxhighlight>
sed '3d' fichier.txt        # Supprime la 3ème ligne</syntaxhighlight>
<span id="extraire-des-lignes-comme-grep"></span>
<span id="extraire-des-lignes-comme-grep"></span>
=== '''Extraire des lignes''' (comme <code>grep</code>) ===
=== '''Extraire des lignes''' (comme <code>grep</code>) ===


<syntaxhighlight lang="bash">sed -n '/motif/p' fichier.txt  # Affiche uniquement les lignes avec "motif"</syntaxhighlight>
<syntaxhighlight lang="bash" copy>sed -n '/motif/p' fichier.txt  # Affiche uniquement les lignes avec "motif"</syntaxhighlight>
<span id="modifier-un-fichier-directement"></span>
<span id="modifier-un-fichier-directement"></span>
=== '''Modifier un fichier directement''' ===
=== '''Modifier un fichier directement''' ===


<syntaxhighlight lang="bash">sed -i 's/foo/bar/g' fichier.txt  # Écrase le fichier (pas de sortie à l'écran)</syntaxhighlight>
<syntaxhighlight lang="bash" copy>sed -i 's/foo/bar/g' fichier.txt  # Écrase le fichier (pas de sortie à l'écran)</syntaxhighlight>
<span id="traiter-plusieurs-motifs"></span>
<span id="traiter-plusieurs-motifs"></span>
=== '''Traiter plusieurs motifs''' ===
=== '''Traiter plusieurs motifs''' ===


<syntaxhighlight lang="bash">sed -e 's/foo/bar/' -e 's/baz/qux/' fichier.txt</syntaxhighlight>
<syntaxhighlight lang="bash" copy>sed -e 's/foo/bar/' -e 's/baz/qux/' fichier.txt</syntaxhighlight>


-----
-----
Ligne 116 : Ligne 116 :
<code>sed</code> supporte les expressions régulières :
<code>sed</code> supporte les expressions régulières :


<syntaxhighlight lang="bash">sed 's/^[0-9]*//' fichier.txt  # Supprime les chiffres en début de ligne</syntaxhighlight>
<syntaxhighlight lang="bash" copy>sed 's/^[0-9]*//' fichier.txt  # Supprime les chiffres en début de ligne</syntaxhighlight>
<span id="modification-conditionnelle"></span>
<span id="modification-conditionnelle"></span>
=== '''Modification conditionnelle''' ===
=== '''Modification conditionnelle''' ===


<syntaxhighlight lang="bash">sed '/début/,/fin/s/motif/remplacement/' fichier.txt  # Remplace entre deux motifs</syntaxhighlight>
<syntaxhighlight lang="bash"copy>sed '/début/,/fin/s/motif/remplacement/' fichier.txt  # Remplace entre deux motifs</syntaxhighlight>
<span id="insérerajouter-du-texte"></span>
<span id="insérerajouter-du-texte"></span>
=== '''Insérer/ajouter du texte''' ===
=== '''Insérer/ajouter du texte''' ===


<syntaxhighlight lang="bash">sed '2i\Ligne ajoutée' fichier.txt  # Insère avant la ligne 2
<syntaxhighlight lang="bash" copy>sed '2i\Ligne ajoutée' fichier.txt  # Insère avant la ligne 2
sed '$a\Fin de fichier' fichier.txt # Ajoute à la dernière ligne</syntaxhighlight>
sed '$a\Fin de fichier' fichier.txt # Ajoute à la dernière ligne</syntaxhighlight>


Ligne 135 : Ligne 135 :
<li><p>'''<code>-i</code> sans sauvegarde''' : Peut corrompre le fichier si la commande échoue.</p></li>
<li><p>'''<code>-i</code> sans sauvegarde''' : Peut corrompre le fichier si la commande échoue.</p></li>
<li><p>'''Séparateurs <code>/</code>''' : Si le motif contient <code>/</code>, utilisez un autre séparateur :</p>
<li><p>'''Séparateurs <code>/</code>''' : Si le motif contient <code>/</code>, utilisez un autre séparateur :</p>
<syntaxhighlight lang="bash">sed 's|/chemin/ancien|/chemin/nouveau|g' fichier.txt</syntaxhighlight></li>
<syntaxhighlight lang="bash" copy>sed 's|/chemin/ancien|/chemin/nouveau|g' fichier.txt</syntaxhighlight></li>
<li><p>'''Espaces et tabulations''' : Utilisez <code>\t</code> pour les tabs ou <code>\s</code> pour les espaces.</p></li></ul>
<li><p>'''Espaces et tabulations''' : Utilisez <code>\t</code> pour les tabs ou <code>\s</code> pour les espaces.</p></li></ul>