Outils pour utilisateurs

Outils du site


linux:sed

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édentesRévision précédente
Prochaine révision
Révision précédente
linux:sed [18/06/2010 14:43] daniellinux:sed [10/08/2012 15:26] (Version actuelle) – bugfix catsc daniel
Ligne 20: Ligne 20:
   * /pattern/,/pattern2/ commande : applique la commande aux lignes qui se trouvent entre une ligne qui vérifie pattern et une autre qui vérifie pattern2   * /pattern/,/pattern2/ commande : applique la commande aux lignes qui se trouvent entre une ligne qui vérifie pattern et une autre qui vérifie pattern2
   * /pattern/,$ : applique la commande entre la première ligne qui vérifie pattern (incluse) et la fin du fichier.   * /pattern/,$ : applique la commande entre la première ligne qui vérifie pattern (incluse) et la fin du fichier.
 +
 +
  
 ===== Commandes ===== ===== Commandes =====
Ligne 27: Ligne 29:
   sed -e '/pattern/a\   sed -e '/pattern/a\
   ajout d'une ligne\   ajout d'une ligne\
-  et d'une autre.' < fichier_src > fichier_dest+  et d'une autre.
 +  La dernière à ajouter n'ayant pas d'antislash 
 +  s/bla/bla/; # autre commande' < fichier_src > fichier_dest
  
   * c : change des lignes complètes, ex (vire le corps des fonctions, blocs compris entre accolades ouvrantes/fermantes qui débutent une ligne, et remplace par "[... corps de la fonction ...]"   * c : change des lignes complètes, ex (vire le corps des fonctions, blocs compris entre accolades ouvrantes/fermantes qui débutent une ligne, et remplace par "[... corps de la fonction ...]"
Ligne 43: Ligne 47:
   * p : affiche la ligne   * p : affiche la ligne
   * P : affiche le début du buffer jusqu'au premier \n (il reste dans le buffer).   * P : affiche le début du buffer jusqu'au premier \n (il reste dans le buffer).
 +  * q : quitte le script (sans analyser les lignes suivantes)
   * y/car_src/car_dest/ : substitue des caractères par d'autres   * y/car_src/car_dest/ : substitue des caractères par d'autres
  
Ligne 133: Ligne 138:
 } }
 </code> </code>
 +
 +
  
  
Ligne 151: Ligne 158:
 Et si on veut aussi virer les commentaires qui suivent "#" et "<nowiki>//</nowiki>", et les lignes vides, alors, on ajoute : Et si on veut aussi virer les commentaires qui suivent "#" et "<nowiki>//</nowiki>", et les lignes vides, alors, on ajoute :
 <code sed> <code sed>
-sed -e '# on charge tout dans le buffer +#!/bin/sed -f     
- { :boucle; N; $! b boucle;}; + 
- # on remplace les * isolés, vire les commentaires /* */ et on remets nos * isolés +# on charge tout dans le buffer 
- s/\([^/]\)\*\([^/]\)/\1µ£µ£µ£\2/g; s#/\*[^\*]*\*/##g; s/µ£µ£µ£/\*/g; +{ :boucle; N; $! b boucle;}; 
- # on vire les commentaires et // + 
- s/#[^\n]*//g; s#//[^\n]*##g; +# on remplace les * isolés, vire les commentaires /* */ et on remets nos * isolés 
- # les espaces et tabulations seules sur leur ligne +s@\([^/]\)\*\([^/]\)@\1µ£µ£µ£\2@g; 
- s/\n[ \t]*\n//g; +s@/\*[^\*]*\*/@@g; 
- # et les lignes vides (\n multiples consécutifs remplacés par un seul) +s@µ£µ£µ£@\*@g; 
- s/[\n]\+/\n/g;' < fichier+ 
 +On vire ce qui suit sur une ligne 
 +s@#[^\n]*@@g; 
 +# les lignes qui commencent par ; (esp avant éventuels) 
 +s@\n[ \t]*;[^\n]*@\n@g; 
 +et par // 
 +s@\n[ \t]*//[^\n]*@\n@g; 
 +# les espaces et tabulations seules sur leur ligne 
 +s@\n[ \t]*\n@\n@g; 
 +# et \n multiples qui pourraient rester après la commande précédente 
 +s@[\n]\+@\n@g;
 </code> </code>
-et dans un fichier d'alias ça donne (qq échappements sup)+ 
 +et dans un fichier d'alias ça donne (dans la définition de l'alias faut ajouter un \ devant $, \n et \t) 
 <code bash> <code bash>
-alias catsc='sed -e "{ :boucle; N; \$! b boucle;}; s/\([^/]\)\*\([^/]\)/\1µ£µ£µ£\2/g; s#/\*[^\*]*\*/##g; s/µ£µ£µ£/\*/g; s/#[^\\n]*//g; s#//[^\\n]*##g; s/\n[ \t]*\\n//g; s/[\\n]\+/\\n/g;" '+alias catsc='sed -e "{ :boucle; N; \$! b boucle;}; 
 +s@\([^/]\)\*\([^/]\)@\1µ£µ£µ£\2@g; 
 +s@/\*[^\*]*\*/@@g; 
 +s@µ£µ£µ£@\*@g; 
 +s@#[^\\n]*@@g; 
 +s@\\n[ \\t]*;[^\\n]*@\\n@g; 
 +s@\\n[ \\t]*//[^\\n]*@\\n@g; 
 +s@\\n[ \\t]*\\n@\\n@g; 
 +s@[\\n]\+@\\n@g;"'
 </code> </code>
  
linux/sed.1276865017.txt.gz · Dernière modification : 18/06/2010 14:43 de daniel