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. | ||
+ | > | ||
+ | > | ||