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 [15-02-2013 10:48] – edmc73 | linux:sed [04-10-2020 10:00] (Version actuelle) – [Remplacement / substitution] edmc73 | ||
|---|---|---|---|
| Ligne 17: | Ligne 17: | ||
| tata 4321 toto tutu | tata 4321 toto tutu | ||
| </ | </ | ||
| + | |||
| + | L' | ||
| Pour remplacer | Pour remplacer | ||
| - | sed -e ' | + | sed -i ' |
| < | < | ||
| Ligne 26: | Ligne 28: | ||
| </ | </ | ||
| - | On peut remarquer que seul la 1ère occurence | + | On peut remarquer que seule la 1ère occurrence |
| - | sed -e ' | + | sed -i ' |
| < | < | ||
| koko 1234 koko titi | koko 1234 koko titi | ||
| Ligne 33: | Ligne 35: | ||
| </ | </ | ||
| + | Pour ignorer la casse, on utilise l' | ||
| + | sed -i ' | ||
| + | |||
| + | Remplacer un \ par / dans les path des #include dans un fichier .c | ||
| + | sed -i '/# | ||
| + | sed -i '/# | ||
| + | sed -i '/# | ||
| + | | ||
| + | Pour remplacer dans l' | ||
| + | |||
| + | find . -name ' | ||
| + | et inversement | ||
| + | find . -name ' | ||
| ==== Translittération ==== | ==== Translittération ==== | ||
| Pratique pour par exemple remplacer tous les e avec accent par un e sans accent. | Pratique pour par exemple remplacer tous les e avec accent par un e sans accent. | ||
| Ligne 41: | Ligne 56: | ||
| | | ||
| ==== Suppression ==== | ==== Suppression ==== | ||
| + | Pour supprimer la 1ère ligne d'un fichier | ||
| + | sed -e ' | ||
| + | Pour supprimer toutes les lignes sauf la 1ère | ||
| + | sed -e ' | ||
| + | Pour supprimer les lignes de 3 à 7 | ||
| + | sed -e ' | ||
| + | Pour n' | ||
| + | sed -e ' | ||
| + | |||
| Pour supprimer toutes les lignes de commentaire qui commence par exemple par **#**, on utilise l' | Pour supprimer toutes les lignes de commentaire qui commence par exemple par **#**, on utilise l' | ||
| sed -e '/ | sed -e '/ | ||
| Ligne 50: | Ligne 74: | ||
| Avec les **[ ]** et spécifie que la ligne commente par un **#** ou un **;**. Le **;** suivant veut dire que nous lançons une autre commande, celle ci dit que nous cherchons une ligne vide. **^** indique le début de la ligne et **$** la fin. **/d** on delete. | Avec les **[ ]** et spécifie que la ligne commente par un **#** ou un **;**. Le **;** suivant veut dire que nous lançons une autre commande, celle ci dit que nous cherchons une ligne vide. **^** indique le début de la ligne et **$** la fin. **/d** on delete. | ||
| + | Supprimer les lignes qui contient un message d' | ||
| + | sed -e '/HTTP accept: Too many open files/ | ||
| + | |||
| + | Éliminer les espaces et tabulations | ||
| + | En début de ligne | ||
| + | sed 's/^[ \t]*// | ||
| + | sed ' | ||
| + | | ||
| + | En fin de ligne | ||
| + | sed 's/[ \t]*$//' | ||
| + | | ||
| + | En début et fin de ligne | ||
| + | sed 's/^[ \t]*//;s/[ \t]*$//' | ||
| ==== Expressions régulières ==== | ==== Expressions régulières ==== | ||
| Prenons le cas de la commande **df** qui permet d' | Prenons le cas de la commande **df** qui permet d' | ||
| Ligne 75: | Ligne 112: | ||
| df | sed -e 's/[ ][ ]*/ /g' -e ' | df | sed -e 's/[ ][ ]*/ /g' -e ' | ||
| + | Si on voulait ne récupérer que le pourcentage d' | ||
| + | df | sed -e ' | ||
| + | Ici on a rajouté **1d** qui permet de supprimer la 1ère ligne. | ||
| + | |||
| + | ===== Exemple en vrac ===== | ||
| + | |||
| + | Source | ||
| + | < | ||
| + | dublablacodecode< | ||
| + | |||
| + | Résultat | ||
| + | < | ||
| + | fichier2.xyz</ | ||
| + | |||
| + | Sed | ||
| + | < | ||
| + | |||
| + | ==== Extraire la date et la reformaté dans un nom de fichier ==== | ||
| + | |||
| + | | ||
| + | $ echo Pict_20140215_0945.jpg | sed -r ' | ||
| + | 15-02-2014 09:45 | ||
| + | |||
| + | ==== Extraire la valeur d'un test avec hdparm ==== | ||
| + | On veut récupérer la valeur 64.66 | ||
| + | < | ||
| + | |||
| + | /dev/sda: | ||
| + | | ||
| + | |||
| + | hdparm -t /dev/sda | sed -r '/ | ||
| + | | ||
| + | Avec le ''/ | ||
| + | '' | ||
| + | On prend la valeur jusqu' | ||
| + | |||
| + | |||
| + | ==== Connaitre les machines connectées à notre serveur NFS ==== | ||
| + | |||
| + | < | ||
| + | |||
| + | |||
| + | |||
| + | ===== Regexp extended ===== | ||
| + | |||
| + | On peut mettre l' | ||
| + | |||
| + | > | ||
| + | > | ||
| + | >The only difference between basic and extended regular expressions is in the behavior of a few characters: ‘?’, ‘+’, parentheses, | ||
| + | > | ||
| + | > | ||
| + | > | ||
| + | >abc? -> ‘abc\?’ when using extended regular expressions. It matches the literal string ‘abc? | ||
| + | >c\+ -> ‘c+’ when using extended regular expressions. It matches one or more ‘c’s. | ||
| + | >a\{3,\} -> ‘a{3,}’ when using extended regular expressions. It matches three or more ‘a’s. | ||
| + | > | ||
| + | > | ||