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
sed [Le 11/01/2024, 13:32]
bcag2 [Liens] suppr liens neoflow.fr, qui n'aboutissent pas depuis plus de 6 mois
sed [Le 23/11/2024, 17:00] (Version actuelle)
90.51.143.2 [Fin de ligne]
Ligne 103: Ligne 103:
 </​note>​ </​note>​
  
-===== Astuces en Vrac =====+===== Astuces en vrac =====
  
 Une syntaxe intéressante peut s'​avérer parfois très utile notamment pour des occurrences de type chemin de dossier **/​chemin/​de/​fichier**. En effet la présence de caractères **/** peut poser certains problèmes. Afin de pallier cela il est possible d'​utiliser une syntaxe différente que voici : Une syntaxe intéressante peut s'​avérer parfois très utile notamment pour des occurrences de type chemin de dossier **/​chemin/​de/​fichier**. En effet la présence de caractères **/** peut poser certains problèmes. Afin de pallier cela il est possible d'​utiliser une syntaxe différente que voici :
Ligne 118: Ligne 118:
 Va remplacer toutes les occurrences **une occurrence** par **une autre** dans le fichier **/​un/​fichier.txt** Va remplacer toutes les occurrences **une occurrence** par **une autre** dans le fichier **/​un/​fichier.txt**
  
-=== Fin de ligne ===+==== Fin de ligne ====
  
-sed traite les lignes individuellement (l'une après l'​autre),​ il semble donc, au premier abord, incapable de joindre deux lignes séparées par un motif comportant le retour ​chariot ​(\n). Heureusement cette difficulté n'est qu'​apparente : il suffit de lui indiquer de traiter les deux lignes.+sed traite les lignes individuellement (l'une après l'​autre),​ il semble donc, au premier abord, incapable de joindre deux lignes séparées par un motif comportant le retour-charriot ​(\n). Heureusement cette difficulté n'est qu'​apparente : il suffit de lui indiquer de traiter les deux lignes.
 Exemple : joindre à la ligne précédente chaque ligne commençant par un espace (soit substituer un espace simple aux deux caractères saut de ligne puis espace) Exemple : joindre à la ligne précédente chaque ligne commençant par un espace (soit substituer un espace simple aux deux caractères saut de ligne puis espace)
 <code bash>sed '​N;​s/​\n / /​g;​P;​D;'​ fichier</​code>​ <code bash>sed '​N;​s/​\n / /​g;​P;​D;'​ fichier</​code>​
Ligne 133: Ligne 133:
  aux heureux utilisateurs de cette distribution.  aux heureux utilisateurs de cette distribution.
 </​file>​ </​file>​
-deviens ​:+devient ​:
 <​file>​ <​file>​
 Aujourd'​hui Ubuntu est incontestablement un beau succès. Aujourd'​hui Ubuntu est incontestablement un beau succès.
Ligne 140: Ligne 140:
 </​file>​ </​file>​
  
-Et pour finir la commande à saisir pour transformer les fins de lignes ​DOS (\r\n] en fins de ligne UNIX (\n) :+Et pour finir la commande à saisir pour transformer les fins de ligne DOS (\r\n] en fins de ligne UNIX (\n) :
 <code bash> <code bash>
 sed '​s/​^M$//'​ fichier sed '​s/​^M$//'​ fichier
Ligne 147: Ligne 147:
 <note tip>en mode console l'​affichage de ^M peut s'​obtenir en saisissant CTRL+V puis CTRL+M</​note>​ <note tip>en mode console l'​affichage de ^M peut s'​obtenir en saisissant CTRL+V puis CTRL+M</​note>​
  
-=== Astuces rapides =====+==== Astuces rapides =====
 ||**Comment faire ?​**|**Commandes**|| ||**Comment faire ?​**|**Commandes**||
 ||Remplacer la chaîne ancienneChaine par la chaîne NouvelleChaine dans le fichier toto.txt | sed -i '​s/​ancienneChaine/​NouvelleChaine/'​ /toto.txt|| ||Remplacer la chaîne ancienneChaine par la chaîne NouvelleChaine dans le fichier toto.txt | sed -i '​s/​ancienneChaine/​NouvelleChaine/'​ /toto.txt||
Ligne 154: Ligne 154:
 ||Remplacer dans chaque ligne contenant '​foo'​ la chaîne ancienneChaine par la chaîne NouvelleChaine dans le fichier toto.txt |sed -i '/​foo/​s/​./​ancienneChaine/​NouvelleChaine/​g'​ toto.txt|| ||Remplacer dans chaque ligne contenant '​foo'​ la chaîne ancienneChaine par la chaîne NouvelleChaine dans le fichier toto.txt |sed -i '/​foo/​s/​./​ancienneChaine/​NouvelleChaine/​g'​ toto.txt||
  
-=== Pour conclure =====+==== Sed sur les fichiers d'un répertoire et ses sous-répertoires ===== 
 +Il peut-être utile de pouvoir appliquer notre commande sed sur les fichiers du répertoire courant, mais aussi dans ses sous-répertoires((src :​ https://​stackoverflow.com/​a/​35607711/​6614155)),​ pour cela on fera :\\ 
 +<code bash> 
 +grep -rl '​texte_à_rechercher_par_exple_ma_pomme'​ /​repertoire_ou_commencer_la_recherche | xargs sed -i '​s/​ma_pomme/​ma_poire/​g'​ 
 +</​code>​ 
 + 
 + 
 +==== Pour conclure =====
  
-Vous l'​aurez bien compris avec ces deux commandes en poche vous pouvez foncièrement faire tout ce que vous souhaitez. ​Je ne peux que vous encourager ​à lire la documentation concernant l'​usage et la syntaxe de ces deux commandes que vous trouverez en tapant respectivement **man sed** et **man cut** \\+Vous l'​aurez bien comprisavec cette commande, souvent associée à la commande //​cut//, ​vous pouvez foncièrement faire tout ce que vous souhaitez. ​N’hésitez pas à lire la documentation concernant l'​usage et la syntaxe de ces deux commandes que vous trouverez en tapant respectivement **man sed** et **man cut** \\
  
 Il ne vous reste plus qu'à intégrer ces connaissances à vos [[:​tutoriel:​script_shell|scripts shell]] ​ Il ne vous reste plus qu'à intégrer ces connaissances à vos [[:​tutoriel:​script_shell|scripts shell]] ​
  • sed.1704976362.txt.gz
  • Dernière modification: Le 11/01/2024, 13:32
  • par bcag2