linux:sed
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
linux:sed [08/03/2010 12:34] – aj alias pour virer les commentaires daniel | linux:sed [10/08/2012 15:26] (Version actuelle) – bugfix catsc daniel | ||
---|---|---|---|
Ligne 20: | Ligne 20: | ||
* / | * / | ||
* /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 '/ | sed -e '/ | ||
ajout d'une ligne\ | ajout d'une ligne\ | ||
- | et d'une autre.' | + | et d'une autre.\ |
+ | La dernière à ajouter n' | ||
+ | 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/ | * c : change des lignes complètes, ex (vire le corps des fonctions, blocs compris entre accolades ouvrantes/ | ||
Ligne 43: | Ligne 47: | ||
* p : affiche la ligne | * p : affiche la ligne | ||
* P : affiche le début du buffer jusqu' | * P : affiche le début du buffer jusqu' | ||
+ | * q : quitte le script (sans analyser les lignes suivantes) | ||
* y/ | * y/ | ||
Ligne 133: | Ligne 138: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | |||
+ | |||
Ligne 150: | Ligne 158: | ||
Et si on veut aussi virer les commentaires qui suivent "#" | Et si on veut aussi virer les commentaires qui suivent "#" | ||
<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/\([^/ | + | { :boucle; N; $! b boucle;}; |
- | # | + | |
- | 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@\([^/ |
- | s/\n[ \t]*\n//g; | + | s@/ |
- | # et les lignes vides (\n multiples | + | 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]*; | ||
+ | # 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 | ||
+ | s@[\n]\+@\n@g; | ||
</ | </ | ||
- | et dans un fichier d' | + | |
+ | et dans un fichier d' | ||
<code bash> | <code bash> | ||
- | alias catsc=' | + | alias catsc=' |
+ | s@\([^/ | ||
+ | s@/ | ||
+ | s@µ£µ£µ£@\*@g; | ||
+ | s@#[^\\n]*@@g; | ||
+ | s@\\n[ \\t]*; | ||
+ | s@\\n[ \\t]*//[^\\n]*@\\n@g; | ||
+ | s@\\n[ \\t]*\\n@\\n@g; | ||
+ | s@[\\n]\+@\\n@g;"' | ||
+ | </ | ||
+ | |||
+ | ==== Récupérer des initiales ==== | ||
+ | On utilise l' | ||
+ | (script utilisé dans claws-mail, cf http:// | ||
+ | < | ||
+ | sed -re ' | ||
+ | # vire ce qui suit un < s'il est précédé d'au moins une lettre | ||
+ | s/ | ||
+ | # vire ce qui suit @ | ||
+ | s/ | ||
+ | # 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/ | ||
+ | # vire les caractères tiret-espace-point | ||
+ | s/[- \."<]//g; | ||
+ | # ajoute "> " à la fin de ce qui reste | ||
+ | s/ | ||
</ | </ |
linux/sed.1268048040.txt.gz · Dernière modification : 08/03/2010 12:34 de daniel