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
Prochaine révisionLes deux révisions suivantes
linux:sed [08/03/2010 12:34] – aj alias pour virer les commentaires daniellinux:sed [09/08/2012 17:42] 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 164: Ligne 170:
 <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]*##g; s/\n[ \t]*\\n//g; s/[\\n]\+/\\n/g;" '
 +</code>
 +
 +==== Récupérer des initiales ====
 +On utilise l'expression '\<' qui désigne le début d'un mot dans les expressions étendues ('\>' désigne la fin d'un mot). Attention, c'est juste un délimiteur (pas de caractère dedans). On entend par "mot" un changement alphanumérique/non-alpha.
 +(script utilisé dans claws-mail, cf http://ll.lairdutemps.org/linux/claws-mail#personnalisation_et_scripts)
 +<code>
 +sed -re '
 +# vire ce qui suit un < s'il est précédé d'au moins une lettre
 +s/([a-zA-Z]+[^<]*)<.*/\1/;
 +# vire ce qui suit @
 +s/(.*)@.*/\1/;
 +#  met en capitale la première lettre d'un mot et vire les caractères non tiret-espace-point qui suivent, pour chaque occurence rencontrée
 +s/(\<.)[^- .]*/\U\1/g;
 +# vire les caractères tiret-espace-point
 +s/[- \."<]//g;
 +# ajoute "> " à la fin de ce qui reste
 +s/.*/&> /;'
 </code> </code>
linux/sed.txt · Dernière modification : 10/08/2012 15:26 de daniel