logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
doc:systeme:sed [23/05/2013 18:51]
smolski [Préparation aux exemples d'illustration de ce tuto :]
doc:systeme:sed [07/09/2016 18:46]
MicP [Préparation aux exemples d'illustration de ce tuto :] divers
Ligne 1: Ligne 1:
 ====== sed ====== ====== sed ======
  
-  * Objet : ''​sed'' ​signifie //Stream EDitor//, autrement dit //éditeur de flux// et plus précisément //éditeur de flux orienté ligne//. +  * Objet : sed 
-  * Niveau requis : TOUS +  * Niveau requis : {{tag>​débutant avisé}} 
-  * Commentaires : // sed est un outil éditeur en ligne. // +  * Commentaires : **sed** ​signifie //Stream EDitor//, autrement dit //éditeur de flux// et plus précisément //éditeur de flux orienté ligne//. 
-  * Débutant, à savoir :  +  * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) 
-     ​* ​[[manuel:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) +  Suivi :  
-     ​* [[manuel:bash]] En complément.+    * Création par [[user>​smolski]] le 24-04-2010 
 +    * Testé par [[user>​smolski]] le 08-10-2013 
 +  * Commentaires sur le forum : [[http://​debian-facile.org/​viewtopic.php?​id=2508 | Lien vers le forum concernant ce tuto]]((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) 
  
 ===== Présentation ===== ===== Présentation =====
  
 ''​sed''​ est souvent défini comme un éditeur de texte en ligne non-interactif. ''​sed''​ est souvent défini comme un éditeur de texte en ligne non-interactif.
-  - Il lit les lignes d'un fichier une à une (ou provenant de l'​entrée standard), sans traiter nécessairement tout le texte du fichier en cours (comme le font [[manuel:vim]] ou [[manuel:nano]] par exemple) ;+  - Il lit les lignes d'un fichier une à une (ou provenant de l'​entrée standard), sans traiter nécessairement tout le texte du fichier en cours (comme le font [[:​doc:​editeurs:​vim:vim]] ou [[:​doc:​editeurs:nano]] par exemple) ;
   - leur applique un certain nombre de commandes d'​édition ;   - leur applique un certain nombre de commandes d'​édition ;
   - et renvoie les lignes résultantes sur la sortie standard, __sans modification__ du fichier traité.   - et renvoie les lignes résultantes sur la sortie standard, __sans modification__ du fichier traité.
Ligne 18: Ligne 21:
  
 La commande ''​sed''​ est une commande très riche, ne vous sont présentées ici que les fonctions les plus courantes, pour plus de détails faites un : La commande ''​sed''​ est une commande très riche, ne vous sont présentées ici que les fonctions les plus courantes, pour plus de détails faites un :
- +<code user>man sed</​code>​
-   ​$ ​man sed+
  
  
Ligne 53: Ligne 55:
 ===== Préparation aux exemples d'​illustration de ce tuto : ===== ===== Préparation aux exemples d'​illustration de ce tuto : =====
  
-Pour réaliser les exemples qui suivront sur votre pc, en session user, rédigez ​un fichier test1.txt ainsi :+Pour réaliser les exemples qui suivront sur votre pc, en session user, créez ​un fichier test1.txt ainsi :
  
-<​code ​bash+<​code ​user fichier_test1.txt
-cat >> ~/test1.txt <<EOF</​code>​ +cat >> ~/test1.txt <<EOF
-<​code>​+
 toto et titi aiment les abricots. toto et titi aiment les abricots.
 toto préfère les Fraises. toto préfère les Fraises.
Ligne 65: Ligne 66:
 </​code>​ </​code>​
  
-Voir : la commande ​[[cat]]+Voir : [[doc:​systeme:​cat | la commande ​cat]]
  
 ==== Option -i ==== ==== Option -i ====
Ligne 74: Ligne 75:
  
 **Syntaxe :** \\ **Syntaxe :** \\
-   sed -i <programme_sed> <fichier_a_traiter>+   sed -i <commande_sed> <fichier_à_traiter>
  
  
Ligne 80: Ligne 81:
 ''​ ''​
 -e''​ permet de spécifier les commandes à appliquer sur le fichier. \\ -e''​ permet de spécifier les commandes à appliquer sur le fichier. \\
-Cette option est utile lorque ​vous appliquez plusieurs commandes. +Cette option est utile lorsque ​vous appliquez plusieurs commandes. ​\\ 
-Afin d'eviter ​que le shell interprète certains ​caracteres, il faut mieux encadrer la commande avec des apostrophes simples ou doubles : ''​ ' ''​ ou ''"''​ .+Afin d'éviter ​que le shell interprète certains ​caractères, il vaut mieux encadrer la commande avec des apostrophes simples ou doubles : ''​ ' ''​ ou ''"''​ .
  
 **Syntaxe :** \\ **Syntaxe :** \\
-   sed -e <programme_sed> <fichier_a_traiter>+   sed -e <commande_sed-e <commande_sed>​ <​fichier_à_traiter>
  
 **Exemple :** **Exemple :**
-<​code ​bash+ 
-sed -e "​s/​[Tt][Oo]/​ton/​g"​ test1.txt</​code>​ +La commande : 
-<​code>​tonton et titi aiment les abricots.+<​code ​user
 +sed -e "​s/​[Tt][Oo]/​ton/g" -e "​s/​abricots/​myrtilles/g" test1.txt</​code>​ 
 + 
 +Donne : 
 +<​code>​tonton et titi aiment les myrtilles.
 tonton préfère les Fraises. tonton préfère les Fraises.
 titi les cerises. titi les cerises.
Ligne 108: Ligne 113:
 sur la //​globalité//​ du fichier, (//​c'​est à dire toutes les lignes//) ''​(/​**g**''​). sur la //​globalité//​ du fichier, (//​c'​est à dire toutes les lignes//) ''​(/​**g**''​).
  
-<​note>​L'​option ''​-e''​ n'est pas nécessaire quand vous n'avez qu'une seule fonction d'​édition.</​note>​+<​note>​L'​option ''​-e''​ n'est pas nécessaire quand vous n'avez qu'une seule commande à faire exécuter à sed.</​note>​ 
 + 
 +=== Astuce === 
 + 
 +En cas de confusion avec un chemin, genre ''/​machin/​truc/​chouette ''​ __après l'​option __ les séparateurs ''/​ ''​ peuvent être remplacés par des caractères neutres, comme la virgule ou le dièse. \\ 
 +Par exemple avec le chemin précédent : 
 +   sed -e '​s#/​machin/​truc/​chouette#/​machin/​truc/​wouap#'​ 
 + 
 +Évitant ainsi des confusions dans l'​interprétation de la commande. 
 + 
 +//Merci à //​**enicar**//​ sur le chan df !//
  
 ==== Option -f ==== ==== Option -f ====
  
-L'​option -f permet d'appliquer la rédaction d'un ''​programme sed'' ​déjà rédigé ​dans un fichier (dit : <fichier_programmedans le tuto).+L'​option -f permet d'utiliser ​un fichier texte contenant les commandes que ''​sed''​ devra appliquer. \\ 
 +Ce fichier est donc un script qui sera interprété par le programme ​''​sed'' ​d'où le nom utilisé ​dans ce tuto : <script_sed>
  
 **Syntaxe :** \\ **Syntaxe :** \\
-   sed -f <fichier_programme> <fichier_a_traiter>+   sed -f <script_sed> <fichier_à_traiter>​ 
 + 
 +<note tip>Pour que les fichiers traités le soient réellement pensez à utiliser l'​option ''​-i''​. Sinon, rien ne sera réalisé réellement.</​note>
  
 === Exemple : === === Exemple : ===
  
-Créer un fichier ​représentant l'écriture de la commande ​''​sed'' ​à envoyer ​+Créer un fichier ''​monScriptSed''​ qui contiendra toutes les commandes que ''​sed'' ​devra exécuter ​
-<​code ​bash+<​code ​user monScriptSed
-cat >> ~/test2.txt ​<<EOF</​code>​ +cat >> ~/monScriptSed ​<<EOF
-<​code>​+
 s/​[Tt][Oo]/​ton/​g s/​[Tt][Oo]/​ton/​g
 s/​[Tt][Ii]/​ti/​g s/​[Tt][Ii]/​ti/​g
Ligne 129: Ligne 146:
 </​code>​ </​code>​
  
-Application de la commande ''​sed''​ avec l'​option ''​-f''​ invitant à appliquer ​la commande rédigée ​dans le fichier //test2.txt// : +Application de la commande ''​sed''​ avec l'​option ''​-f''​ invitant à appliquer ​les commandes contenues ​dans le fichier //monScriptSed// : 
-<​code ​bash+<​code ​user
-sed -f test2.txt ​test1.txt </​code>​+sed -f monScriptSed ​test1.txt </​code>​ 
 + 
 +Donne :
 <​code>​tonton et titi aiment les abricots. <​code>​tonton et titi aiment les abricots.
 tonton préfère les fraises. tonton préfère les fraises.
Ligne 145: Ligne 164:
  
 **Syntaxe :** \\ **Syntaxe :** \\
-   sed -n <fichier_programme>/p <fichier_a_traiter>+   sed -n <commande_sed>/p <fichier_à_traiter>
  
 **Exemple :** **Exemple :**
-<​code ​bash+<​code ​user
-sed -n s/​Fraises/​fraises/​ test1.txt </​code>​+sed -n s/​Fraises/​fraises/​ test1.txt </​code>​ 
 Bien que traité, rien n'​apparait. Bien que traité, rien n'​apparait.
  
 Avec la fonction p : Avec la fonction p :
-<​code ​bash+<​code ​user
-sed -n s/​Fraises/​fraises/​p test1.txt </​code>​+sed -n s/​Fraises/​fraises/​p test1.txt </​code>​ 
 + 
 +Donne :
 <​code>​ <​code>​
 toto préfère les fraises. toto préfère les fraises.
 </​code>​ </​code>​
 +
 Seule la ligne traitée est affichée. :-) Seule la ligne traitée est affichée. :-)
  
Ligne 165: Ligne 188:
  
 **Syntaxe :** **Syntaxe :**
-   sed <​option>​ "s/ <fichier_programme>" <fichier_a_traiter>+   sed <​option>​ "s/ <commande_sed>" <fichier_à_traiter>​ 
 + 
 +<note tip>Pour que les fichiers traités le soient réellement pensez à utiliser l'​option ''​-i''​. Sinon, rien ne sera réalisé réellement.</​note>
  
 === Exemples : === === Exemples : ===
  
-<​code ​bash+<​code ​user
-sed -e "​s/​toto/​TOTO/"​ test1.txt</​code>​+sed "​s/​toto/​TOTO/"​ test1.txt</​code>​
  
 va changer la première occurence de la chaîne //toto// par //TOTO// (__uniquement__ la première chaîne //toto// rencontrée dans le texte), et affichera ceci : va changer la première occurence de la chaîne //toto// par //TOTO// (__uniquement__ la première chaîne //toto// rencontrée dans le texte), et affichera ceci :
Ligne 181: Ligne 206:
 ---- ----
 \\ \\
-<​code ​bash+<​code ​user
-sed "s/toto/TOTO/2" test1.txt</​code>​+sed "2s/​toto/​TOTO/"​ test1.txt</​code>​
  
 va changer la __seconde__ occurence de la chaîne //toto// par **TOTO** (__uniquement__ la seconde chaîne //toto// rencontrée dans le texte) va changer la __seconde__ occurence de la chaîne //toto// par **TOTO** (__uniquement__ la seconde chaîne //toto// rencontrée dans le texte)
Ligne 193: Ligne 218:
 ---- ----
 \\ \\
-<​code ​bash+<​code ​user
-sed "​s/​toto/​TOTO/​g"​ test1.txt</​code>​+sed "​s/​toto/​TOTO/​g"​ test1.txt</​code>​
 ''​g = global''​ \\ ''​g = global''​ \\
 ''​g''​ va changer __toutes les occurences__ de la chaîne //toto// par //TOTO// (toutes les chaînes //toto// rencontrées seront changées) ''​g''​ va changer __toutes les occurences__ de la chaîne //toto// par //TOTO// (toutes les chaînes //toto// rencontrées seront changées)
Ligne 201: Ligne 226:
 \\ \\
  
-<code bash> +Nous pouvons également choisir de ne changer qu'une occurence en la situant dans le texte. \\ 
-sed "​s/​toto/​TOTO/​p"​ test1.txt</​code>​+Dans le fichier exemple ci-dessous : 
 +<file bash texte_exemple>​toto et titi sont sur un bato</​file>​ 
 + 
 +La commande : 
 +<​code ​user> 
 +sed -e "​s/​to/​teau/​3"​ texte_exemple</​code>​ 
 + 
 +n'​agira que sur la //​troisième occurence// "​to"​ et affichera la rectification : 
 +<​file ​bash texte_exemple>​toto et titi sont sur un bateau</​file>​ 
 + 
 +//Cool, non ?// 8-) 
 + 
 +---- 
 +\\ 
 +<code user
 +sed "​s/​toto/​TOTO/​p"​ test1.txt</​code>​
  
 en cas de remplacement la ligne concernée est affichée sur la sortie standard (uniquement en cas de substitution) en cas de remplacement la ligne concernée est affichée sur la sortie standard (uniquement en cas de substitution)
Ligne 209: Ligne 249:
 \\ \\
  
-<​code ​bash+<​code ​user
-sed "​s/​toto/​TOTO/​w ​resultat" test1.txt</​code>​+sed "​s/​toto/​TOTO/​w ​résultat" test1.txt</​code>​ 
 en cas de substitution la ligne en entrée est inscrite dans un fichier ''​résultat''​ en cas de substitution la ligne en entrée est inscrite dans un fichier ''​résultat''​
-<​code ​bash+<​code ​user
-sed "​s/​toto/​TOTO/​w ​resultat1.txt" test1.txt</​code>​+sed "​s/​toto/​TOTO/​w ​résultat1.txt" test1.txt</​code>​ 
 + 
 +Donne :
 <​code>​TOTO et titi aiment les abricots. <​code>​TOTO et titi aiment les abricots.
 TOTO préfère les Fraises. TOTO préfère les Fraises.
Ligne 219: Ligne 262:
 TOTo et TITI sont des chipoteurs du jardin. TOTo et TITI sont des chipoteurs du jardin.
 </​code>​ </​code>​
 +
 Lecture du fichier résultat1.txt créé : Lecture du fichier résultat1.txt créé :
-<​code ​bash+<​code ​user
-less resultat1.txt</​code>​+less résultat1.txt</​code>​ 
 + 
 +Donne :
 <​code>​ <​code>​
 TOTO et titi aiment les abricots. TOTO et titi aiment les abricots.
Ligne 229: Ligne 275:
 ==== sed et les regexp ==== ==== sed et les regexp ====
  
-La fonction de substitution peut aussi être utilisée avec une **expression ​régulière**. \\ +La fonction de substitution peut aussi être utilisée avec une **expression ​rationnelle**. \\ 
-Voir : [[regexp]]+Voir : [[:​doc:​programmation:​shell:​regexp]] 
 + 
 +<note tip>Pour que les fichiers traités le soient réellement pensez à utiliser l'​option ''​-i''​. Sinon, rien ne sera réalisé réellement.</​note>​
  
 === Exemples : === === Exemples : ===
  
-<​code ​bash+<​code ​user
-sed -e "​s/​[Ff]raises/​FRAISES/​g"​ test1.txt</​code>​+sed "​s/​[Ff]raises/​FRAISES/​g"​ test1.txt</​code>​
  
 substitue toutes les chaînes //Fraises// ou //fraises// par ''​FRAISES''​ substitue toutes les chaînes //Fraises// ou //fraises// par ''​FRAISES''​
 +
 ---- ----
 \\ \\
-<​code ​bash+<​code ​user
-sed -e "​s/​^/#/"​ test1.txt </​code>​+sed "​s/​^/#/"​ test1.txt </​code>​ 
 + 
 +Donne :
 <​code>#​toto et titi aiment les abricots. <​code>#​toto et titi aiment les abricots.
 #toto préfère les Fraises. #toto préfère les Fraises.
 #titi les cerises. #titi les cerises.
 #TOTo et TITI sont des chipoteurs du jardin.</​code>​ #TOTo et TITI sont des chipoteurs du jardin.</​code>​
 +
 Ainsi, nous avons commenté l'​ensemble des lignes du fichier test1.txt. Ainsi, nous avons commenté l'​ensemble des lignes du fichier test1.txt.
 +
 ---- ----
 \\ \\
-<​code ​bash+<​code ​user
-sed -e "​3s/​^/#/"​ test1.txt</​code>​+sed "​3s/​^/#/"​ test1.txt</​code>​ 
 + 
 +Donne :
 <​code>​toto et titi aiment les abricots. <​code>​toto et titi aiment les abricots.
 toto préfère les Fraises. toto préfère les Fraises.
Ligne 257: Ligne 312:
 </​code>​ </​code>​
 Ainsi, nous avons commenté uniquement la 3ème ligne du fichier //​test1.txt//​. Ainsi, nous avons commenté uniquement la 3ème ligne du fichier //​test1.txt//​.
 +
 ---- ----
 \\ \\
-<​code ​bash+<​code ​user
-sed -e "/​cerises/​s/​^/#/"​ test1.txt</​code>​+sed "/​cerises/​s/​^/#/"​ test1.txt</​code>​ 
 + 
 +Donne :
 <​code>​toto et titi aiment les abricots. <​code>​toto et titi aiment les abricots.
 toto préfère les Fraises. toto préfère les Fraises.
Ligne 266: Ligne 324:
 TOTo et TITI sont des chipoteurs du jardin. TOTo et TITI sont des chipoteurs du jardin.
 </​code>​ </​code>​
 +
 Ainsi, nous avons commenté uniquement la ligne du fichier //​test1.txt//​ contenant le motif : **cerises**. Ainsi, nous avons commenté uniquement la ligne du fichier //​test1.txt//​ contenant le motif : **cerises**.
  
Ligne 273: Ligne 332:
  
 **Syntaxe :** \\ **Syntaxe :** \\
-   sed <fichier_programme>d <fichier_a_traiter>+   sed <commande_sed>d <fichier_à_traiter>​ 
 + 
 +<note tip>Pour que les fichiers traités le soient réellement pensez à utiliser l'​option ''​-i''​. Sinon, rien ne sera réalisé réellement.</​note>
  
 **Exemple :** **Exemple :**
-<​code ​bash+<​code ​user
-sed "​2,​4d"​ test1.txt</​code>​+sed "​2,​4d"​ test1.txt</​code>​ 
 Cette commande va supprimer les lignes ''​2 à 4''​ du <​fichier>​. Cette commande va supprimer les lignes ''​2 à 4''​ du <​fichier>​.
  
Ligne 284: Ligne 346:
  
 On peut utiliser les expressions régulières:​ On peut utiliser les expressions régulières:​
-<​code ​bash+<​code ​user
-sed "/​toto/​d"​ test1.txt</​code>​+sed "/​toto/​d"​ test1.txt</​code>​
  
 Cette commande __supprime les lignes__ contenant la chaîne ''​toto''​. Cette commande __supprime les lignes__ contenant la chaîne ''​toto''​.
Ligne 293: Ligne 355:
  
 Si, à l'​inverse,​ __on ne veut pas effacer__ les lignes contenant la chaîne toto (toutes les autres sont supprimées),​ on tapera: Si, à l'​inverse,​ __on ne veut pas effacer__ les lignes contenant la chaîne toto (toutes les autres sont supprimées),​ on tapera:
-<​code ​bash+<​code ​user
-sed "/​toto/​!d"​ test1.txt</​code>​+sed "/​toto/​!d"​ test1.txt</​code>​
  
 ==== Les fonctions p, l, et = ==== ==== Les fonctions p, l, et = ====
Ligne 306: Ligne 368:
  
 La commande "''​l''"​ (list) affiche la ligne sélectionnée sur la sortie standard avec en plus les caractères de contrôles en clair avec leur code ASCII (deux chiffres en octal). La commande "''​l''"​ (list) affiche la ligne sélectionnée sur la sortie standard avec en plus les caractères de contrôles en clair avec leur code ASCII (deux chiffres en octal).
-<​code ​bash+<​code ​user
-sed l test1.txt</​code>​+sed l test1.txt</​code>​ 
 + 
 +Donne :
 <​code>​ <​code>​
 toto et titi aiment les abricots.$ toto et titi aiment les abricots.$
Ligne 318: Ligne 382:
  
 La commande "''​=''"​ donne le numéro de la ligne sélectionnée sur la sortie standard. La commande "''​=''"​ donne le numéro de la ligne sélectionnée sur la sortie standard.
-<​code ​bash> +<​code ​user>sed = test1.txt</​code>​ 
-sed = test1.txt</​code>​+ 
 +Donne :
 <​code>​ <​code>​
 1 1
Ligne 330: Ligne 395:
 TOTo et TITI sont des chipoteurs du jardin.</​code>​ TOTo et TITI sont des chipoteurs du jardin.</​code>​
  
-<​code ​bash+<​code ​user
-sed "/​toto/​="​ test1.txt</​code>​ +sed "/​toto/​="​ test1.txt</​code>​ 
-Cette commande va afficher le numéro ​des lignes ​contenant la chaîne ''​toto''​ ainsi :+ 
 +Donne : 
 +Cette commande va afficher le numéro ​de chaque ligne contenant la chaîne ''​toto''​ ainsi :
 <​code>​ <​code>​
 1 1
Ligne 343: Ligne 410:
 ==== Remarque ==== ==== Remarque ====
  
-<note tip>Ces trois commandes sont utiles pour le débogage, quand vous mettez au point vos programmes ​''​sed''​.</​note>​+<note tip>Ces trois commandes sont utiles pour le débogage, quand vous mettez au point vos commandes ​''​sed''​.</​note>​
  
 ==== Les fonctions q, r et w ==== ==== Les fonctions q, r et w ====
Ligne 350: Ligne 417:
  
 La fonction "''​q''"​ (quit) va interrompre l'​exécution de **sed**, la ligne en cours de traitement est affichée sur la sortie standard (uniquement si l'​option "''​-n''"​ n'a pas été utilisée). La fonction "''​q''"​ (quit) va interrompre l'​exécution de **sed**, la ligne en cours de traitement est affichée sur la sortie standard (uniquement si l'​option "''​-n''"​ n'a pas été utilisée).
-<​code ​bash+<​code ​user
-~$ sed "/​cerises/​q"​ test1.txt </​code>​+sed "/​cerises/​q"​ test1.txt </​code>​ 
 + 
 +Donne :
 <​code>​ <​code>​
 toto et titi aiment les abricots. toto et titi aiment les abricots.
Ligne 361: Ligne 430:
  
 La fonction "''​r''"​ (read) lit le contenu d'un fichier et écrit le contenu sur la sortie standard. La fonction "''​r''"​ (read) lit le contenu d'un fichier et écrit le contenu sur la sortie standard.
-<​code ​bash+<​code ​user
-sed r test1.txt </​code>​+sed r test1.txt </​code>​ 
 + 
 +Donne :
 <​code>​ <​code>​
 toto et titi aiment les abricots. toto et titi aiment les abricots.
Ligne 374: Ligne 445:
 La fonction "''​w''"​ (write) écrit la ligne sélectionnée dans un fichier. \\ La fonction "''​w''"​ (write) écrit la ligne sélectionnée dans un fichier. \\
 Par exemple : Par exemple :
-<​code ​bash+<​code ​user
-sed "/​^toto/​w resultat2.txt"​ test1.txt</​code>​+sed "/​^toto/​w resultat2.txt"​ test1.txt</​code>​ 
 Cette commande va écrire dans le fichier ''​resultat2.txt''​ toutes les lignes du fichier //​test1.txt//​ commençant par la chaîne //toto//. Cette commande va écrire dans le fichier ''​resultat2.txt''​ toutes les lignes du fichier //​test1.txt//​ commençant par la chaîne //toto//.
  
Ligne 388: Ligne 460:
  
 **Exemple :** \\ **Exemple :** \\
-<​code ​bash> +<​code ​user>sed 1i\ Début test1.txt</​code>​ 
-sed 1i\ Début test1.txt</​code>​+ 
 +Donne
 <​code>​Début <​code>​Début
 toto et titi aiment les abricots. toto et titi aiment les abricots.
Ligne 405: Ligne 478:
  
 **Exemple :** \\ **Exemple :** \\
-<​code ​bash> +<​code ​user>sed 4a\ Fin test1.txt</​code>​ 
-sed 4a\ Fin test1.txt</​code>​+ 
 +Donne :
 <​code>​ <​code>​
 toto et titi aiment les abricots. toto et titi aiment les abricots.
Ligne 412: Ligne 486:
 titi les cerises. titi les cerises.
 TOTo et TITI sont des chipoteurs du jardin. TOTo et TITI sont des chipoteurs du jardin.
-Fin +Fin</​code>​
-</​code>​+
  
 Vous pouvez appeler la fonction ''​i''​ ou ''​a''​ dans un fichier de commande sed. Vous pouvez appeler la fonction ''​i''​ ou ''​a''​ dans un fichier de commande sed.
  
 **Exemple :** \\ **Exemple :** \\
-Soit un fichier //prog.sed// rédigé ainsi :+Soit un fichier //monScriptSed// rédigé ainsi :
  
-<​code ​bash> +<​code ​user>cat >> ~/monScriptSed ​<<EOF
-cat >> ~/test3.txt ​<<EOF</​code>​ +
-<​code>​+
 1i\\  1i\\ 
 début du traitement début du traitement
Ligne 433: Ligne 504:
  
 On exécute la commande en tapant : On exécute la commande en tapant :
-<​code ​bash> +<​code ​user>sed -f monScriptSed ​test1.txt</​code>​ 
-sed -f test3.txt ​test1.txt</​code>​+ 
 +Résultat :
 <​code>​ <​code>​
 début du traitement début du traitement
Ligne 444: Ligne 516:
 </​code>​ </​code>​
  
-la commande rédigée ​dans le fichier //test3.txt// pour effet d'​inscrire avant la première ligne (1i) le texte :+les commandes rédigées ​dans le fichier //monScriptSed// ont pour effet d'​inscrire avant la première ligne (1i) le texte :
    ​début de traitement    ​début de traitement
  
Ligne 451: Ligne 523:
  
 de notre fichier. test1.txt de notre fichier. test1.txt
 +
 +<​note>​Pour rendre effective cette commande programmée,​ écrivez : ''​ -i ''​ ainsi :
 +<code user>sed -i -f monScriptSed test1.txt</​code></​note>​
  
 ==== sed et les sous-chaînes ==== ==== sed et les sous-chaînes ====
  
 La commande: La commande:
- 
    sed -e "​s/​\([0-9][0-9]*\)/​aa\1aa/"​ <​fichier>​    sed -e "​s/​\([0-9][0-9]*\)/​aa\1aa/"​ <​fichier>​
  
Ligne 467: Ligne 541:
  
 La commande: La commande:
- 
    sed -e '​s/​motif:​ .*/motif: nouveau/'​ <​fichier>​    sed -e '​s/​motif:​ .*/motif: nouveau/'​ <​fichier>​
  
Ligne 473: Ligne 546:
  
 //Merci à //​**cthulu**//​ Hop !// LOL //Merci à //​**cthulu**//​ Hop !// LOL
 +
 ===== Lien : ===== ===== Lien : =====
  
   * http://​www.funix.org/​fr/​unix/​expr-sed.htm#​haut   * http://​www.funix.org/​fr/​unix/​expr-sed.htm#​haut
   * http://​www.shellunix.com/​sed.html   * http://​www.shellunix.com/​sed.html
 +
 +**Voir aussi ssed aux fonctions plus étendues :**
 +  * https://​debian-facile.org/​utilisateurs:​phlinux:​tutos:​omegat-merge-de-la-source-avec-la-traduction
 +
  
 ===== Remerciements ===== ===== Remerciements =====
  
 //Tous mes remerciements à //​**Malekal_morte** et **captnfab**//​ pour leurs sciences et patiences et à l'​équipe redoutable d'//​**adrien**//,​ //​**appzer0**//​ et //​**morphalus**//​ sur le salon toujours souriant du chan //​**#​slackware-fr**. :-D //Tous mes remerciements à //​**Malekal_morte** et **captnfab**//​ pour leurs sciences et patiences et à l'​équipe redoutable d'//​**adrien**//,​ //​**appzer0**//​ et //​**morphalus**//​ sur le salon toujours souriant du chan //​**#​slackware-fr**. :-D
doc/systeme/sed.txt · Dernière modification: 30/09/2023 22:14 par captnfab

Pied de page des forums

Propulsé par FluxBB