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 [23/12/2008 10:14] – aj optim 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 101: | Ligne 106: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| ==== Récupérer les tailles d' | ==== Récupérer les tailles d' | ||
| Ligne 131: | Ligne 137: | ||
| p | p | ||
| } | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== Virer les commentaires ==== | ||
| + | |||
| + | sed est " | ||
| + | |||
| + | <code sed> | ||
| + | sed -e '{ :boucle; N; $! b boucle;}; s#/ | ||
| + | </ | ||
| + | Ça marche pour virer les "/* bla bla */" mais ça garde du "/* bla * bla */", on peut peaufiner en virant d' | ||
| + | <code sed> | ||
| + | sed -e '{ :boucle; N; $! b boucle;}; s/ | ||
| + | </ | ||
| + | |||
| + | Et si on veut aussi virer les commentaires qui suivent "#" | ||
| + | <code sed> | ||
| + | #!/bin/sed -f | ||
| + | |||
| + | # on charge tout dans le buffer | ||
| + | { :boucle; N; $! b boucle;}; | ||
| + | |||
| + | # on remplace les * isolés, vire les commentaires /* */ et on remets nos * isolés | ||
| + | s@\([^/ | ||
| + | s@/ | ||
| + | s@µ£µ£µ£@\*@g; | ||
| + | |||
| + | # On vire ce qui suit # sur une ligne | ||
| + | s@# | ||
| + | # les lignes qui commencent par ; (esp avant éventuels) | ||
| + | s@\n[ \t]*; | ||
| + | # et par // | ||
| + | s@\n[ \t]*// | ||
| + | # 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; | ||
| + | </ | ||
| + | |||
| + | et dans un fichier d' | ||
| + | |||
| + | <code bash> | ||
| + | alias catsc=' | ||
| + | s@\([^/ | ||
| + | s@/ | ||
| + | s@µ£µ£µ£@\*@g; | ||
| + | s@# | ||
| + | s@\\n[ \\t]*; | ||
| + | s@\\n[ \\t]*// | ||
| + | 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/[- \."< | ||
| + | # ajoute "> " à la fin de ce qui reste | ||
| + | s/ | ||
| </ | </ | ||
linux/sed.1230023678.txt.gz · Dernière modification : 23/12/2008 10:14 de daniel