Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente | |||
wiki:sed.et.awk [2018/05/09 19:40] root [Find] |
— (Version actuelle) | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Sed et AWK ====== | ||
- | Cette page a pour but de recenser les différents usages de SED, cette merveilleuse commande qui m'a fait gagner beaucoup de temps, et qui m'en a demandé le double pour comprendre son bon fonctionnement.\\ | ||
- | |||
- | SED (Stream EDitor) est un outil unix/linux de la norme posix. C'est un langage a lui tout seul, le gérer demande enormément de temps et de pratiques, et son lot de fails vient avec.\\ | ||
- | |||
- | Le premier conseil que je peux donner avant de commencer a utiliser SED est de se familiariser avec les REGEX car on en utilise un sacré paquet. | ||
- | ====== SED ====== | ||
- | ==== Regex ==== | ||
- | Cette partie ne va pas exploiter les regex de [A-Z] mais donnera une base sur laquelle partir pour commecer a utiliser SED. | ||
- | |||
- | < | ||
- | ┌──────────┬────────────────────────────────────────────────────────────────┐ | ||
- | │Character │ | ||
- | ├──────────┼────────────────────────────────────────────────────────────────┤ | ||
- | │^ │ Match le debut d'une ligne │ | ||
- | ├──────────┼────────────────────────────────────────────────────────────────┤ | ||
- | │$ │ Match la fin d'une ligne │ | ||
- | ├──────────┼────────────────────────────────────────────────────────────────┤ | ||
- | │. │ Match tout caractère seul │ | ||
- | ├──────────┼────────────────────────────────────────────────────────────────┤ | ||
- | │* │ Match 0 ou plusieurs occurences du dernier caractère | ||
- | ├──────────┼────────────────────────────────────────────────────────────────┤ | ||
- | │[chars] | ||
- | └──────────┴────────────────────────────────────────────────────────────────┘ | ||
- | |||
- | |||
- | ┌──────────┬────────────────────────────────────────────────────────────────┐ | ||
- | │expression│ | ||
- | ├──────────┼────────────────────────────────────────────────────────────────┤ | ||
- | │ / | ||
- | │ │ a+c, a-c, abc, match, et a3c │ | ||
- | ├──────────┼────────────────────────────────────────────────────────────────┤ | ||
- | │/ | ||
- | │ │ tel que ace, yacc, and arctic. | ||
- | ├──────────┼────────────────────────────────────────────────────────────────┤ | ||
- | │/ | ||
- | ├──────────┼────────────────────────────────────────────────────────────────┤ | ||
- | │/ | ||
- | ├──────────┼────────────────────────────────────────────────────────────────┤ | ||
- | │/ | ||
- | ├──────────┼────────────────────────────────────────────────────────────────┤ | ||
- | │/ */ │ Match un ou plusieurs espaces | ||
- | └──────────┴────────────────────────────────────────────────────────────────┘ | ||
- | |||
- | ┌───────────┬────────────────────────────────────────────────────────────────┐ | ||
- | │ Set | ||
- | ├───────────┼────────────────────────────────────────────────────────────────┤ | ||
- | │ [a-z] | ||
- | ├───────────┼────────────────────────────────────────────────────────────────┤ | ||
- | │ [A-Z] | ||
- | ├───────────┼────────────────────────────────────────────────────────────────┤ | ||
- | │ [a-zA-Z] | ||
- | ├───────────┼────────────────────────────────────────────────────────────────┤ | ||
- | │ [0-9] | ||
- | ├───────────┼────────────────────────────────────────────────────────────────┤ | ||
- | │[a-zA-Z0-9]│ Match un nombre ou une lettre | ||
- | └───────────┴────────────────────────────────────────────────────────────────┘ | ||
- | </ | ||
- | ==== Suppression ==== | ||
- | supprimer ligne 1: | ||
- | <code bash> | ||
- | sed -e " | ||
- | </ | ||
- | supprimer lignes 1 **et** 3: | ||
- | <code bash> | ||
- | sed -e " | ||
- | </ | ||
- | supprimer lignes 1 **à** 3: | ||
- | <code bash> | ||
- | sed -e "1,3 d" file | ||
- | </ | ||
- | Supprime les lignes vides **ou** celles n' | ||
- | <code bash> | ||
- | sed -e '/ | ||
- | </ | ||
- | supprime les lignes qui commencent par un **#** | ||
- | <code bash> | ||
- | sed -i '/ | ||
- | </ | ||
- | supprime les lignes vide | ||
- | <code bash> | ||
- | sed -i '/ | ||
- | </ | ||
- | supprime le texte entre les **()** | ||
- | <code bash> | ||
- | sed " | ||
- | </ | ||
- | |||
- | |||
- | ==== Substitution ==== | ||
- | remplace **lastname** par **nom** etc... /g pour l' | ||
- | <code bash> | ||
- | sed -re ' | ||
- | </ | ||
- | remplace le chiffre 20 de la ligne qui commence par **age** par vingt | ||
- | <code bash> | ||
- | sed -re '/ | ||
- | </ | ||
- | |||
- | modifie la lettre **a** du mot age par **â** | ||
- | <code bash> | ||
- | sed -re '/ | ||
- | </ | ||
- | |||
- | rajoute un # au début de chaque ligne contenant le mot " | ||
- | <code bash> | ||
- | sed '/ | ||
- | </ | ||
- | ==== Scripts ==== | ||
- | |||
- | <code bash> | ||
- | scriptsed.sh | ||
- | sed -f scriptsed.sh passwd | ||
- | Utilisation pour le fichier passwd | ||
- | / | ||
- | / | ||
- | / | ||
- | y/o/0/ | ||
- | </ | ||
- | ==== Rename ==== | ||
- | |||
- | <code bash> | ||
- | ls | sed -re " | ||
- | </ | ||
- | |||
- | <code bash> | ||
- | for file in *.txt ; do mv $file `echo $file | sed ' | ||
- | </ | ||
- | ==== Between ==== | ||
- | <code bash> | ||
- | sed -n '/ | ||
- | </ | ||
- | supprimer le texte entre les lignes start et end | ||
- | <code bash> | ||
- | sed -i '/ | ||
- | </ | ||
- | ==== SED et Find ==== | ||
- | |||
- | Recherche dans tout les fichiers d'une arborescence la chaine " | ||
- | " | ||
- | <code bash> | ||
- | find ./ -type f -exec sed -i -e ' | ||
- | </ | ||
- | ==== Misc ==== | ||
- | Afficher la 15eme ligne:\\ | ||
- | <code bash> | ||
- | sed -n 15p | ||
- | </ | ||
- | ==== Backreference ==== | ||
- | Rajoute un # devant chaque mot contenant " | ||
- | <code bash> | ||
- | sed " | ||
- | |||
- | |||
- | / | ||
- | / | ||
- | / | ||
- | #/ | ||
- | #Custom LVM | ||
- | / | ||
- | |||
- | </ | ||
- | ====== AWK ====== | ||
- | print les lignes contenant la chaine " | ||
- | <code bash> | ||
- | > cat file | awk '/ | ||
- | String.toto = toto | ||
- | String.tutu -> tutu | ||
- | </ | ||
- | print la chaîne de caractères contenant la chaine " | ||
- | <code bash> | ||
- | > cat file | awk ' | ||
- | String.toto | ||
- | String.tutu | ||
- | </ | ||
- | print les lignes comprises entre les patterns Start et End | ||
- | <code bash> | ||
- | > awk '/ | ||
- | Start | ||
- | String.toto = toto | ||
- | String.tutu -> tutu | ||
- | End | ||
- | </ | ||
- | Ajoute une variable shell dans la commande SED | ||
- | <code bash> | ||
- | var=" | ||
- | awk -v var=" | ||
- | </ | ||
- | {{tag> |