wiki:sed.et.awk

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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. 
- 
-<code> 
-┌──────────┬────────────────────────────────────────────────────────────────┐ 
-│Character │                      Description                            │ 
-├──────────┼────────────────────────────────────────────────────────────────┤ 
-│^    │ 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]   │ Match n'importe quel caractère entre crochets                  │ 
-└──────────┴────────────────────────────────────────────────────────────────┘ 
- 
- 
-┌──────────┬────────────────────────────────────────────────────────────────┐ 
-│expression│                      Description                            │ 
-├──────────┼────────────────────────────────────────────────────────────────┤ 
-│ /a.c/    │ Match les lignes qui contiennent                               │ 
-│          │ a+c, a-c, abc, match, et a3c                                   │ 
-├──────────┼────────────────────────────────────────────────────────────────┤ 
-│/a*c/    │ Matches les lignes qui contiennent plusieurs fois la lettre c  │ 
-│          │ tel que ace, yacc, and arctic.                                 │ 
-├──────────┼────────────────────────────────────────────────────────────────┤ 
-│/[tT]he/  │ Match les mots The and the:                                    │ 
-├──────────┼────────────────────────────────────────────────────────────────┤ 
-│/^$/    │ Match les lignes blanches                                      │ 
-├──────────┼────────────────────────────────────────────────────────────────┤ 
-│/^.*$/    │ Match toute la ligne, peu importe ce qu'elle contient          │ 
-├──────────┼────────────────────────────────────────────────────────────────┤ 
-│/ */    │ Match un ou plusieurs espaces                                  │ 
-└──────────┴────────────────────────────────────────────────────────────────┘ 
-  
-┌───────────┬────────────────────────────────────────────────────────────────┐ 
-│ Set       │                      Description                             │ 
-├───────────┼────────────────────────────────────────────────────────────────┤ 
-│ [a-z]     │ Match une lettre minuscule                                     │ 
-├───────────┼────────────────────────────────────────────────────────────────┤ 
-│ [A-Z]     │ Match une lettre majuscule                                     │ 
-├───────────┼────────────────────────────────────────────────────────────────┤ 
-│ [a-zA-Z]  │ Match une lettre                                               │ 
-├───────────┼────────────────────────────────────────────────────────────────┤ 
-│ [0-9]     │ Match un nombre                                                │ 
-├───────────┼────────────────────────────────────────────────────────────────┤ 
-│[a-zA-Z0-9]│ Match un nombre ou une lettre                                  │ 
-└───────────┴────────────────────────────────────────────────────────────────┘ 
-</code> 
-==== Suppression ==== 
-supprimer ligne 1: 
-<code bash> 
-sed -e "1d;" file 
-</code> 
-supprimer lignes 1 **et** 3: 
-<code bash> 
-sed -e "1d;3d" file 
-</code> 
-supprimer lignes 1 **à** 3: 
-<code bash> 
-sed -e "1,3 d" file 
-</code> 
-Supprime les lignes vides **ou** celles n'ayant que 1 seul caractère **#** 
-<code bash> 
-sed -e '/^$/d;/^#$/d' 
-</code> 
-supprime les lignes qui commencent par un **#** 
-<code bash> 
-sed -i '/^#/d' file 
-</code> 
-supprime les lignes vide 
-<code bash> 
-sed -i '/^\s*$/d' file 
-</code> 
-supprime le texte entre les **()** 
-<code bash> 
-sed "s/[(][^)]*[)]/()/g" 
-</code> 
- 
- 
-==== Substitution ==== 
-remplace **lastname** par **nom** etc... /g pour l'appliquer a chaque occurrence dans notre fichier, sinon SED remplace que la 1ere. 
-<code bash> 
-sed -re 's/lastname/nom/g; s/Firstname/prenom/g;s/genre/sexe/g;s/age/datedenaissance/g' file_2015-04-05 
-</code> 
-remplace le chiffre 20 de la ligne qui commence par **age** par vingt 
-<code bash> 
-sed -re '/^age/s/20/vingt/g;' file 
-</code> 
- 
-modifie la lettre **a** du mot age par **â** 
-<code bash> 
-sed -re '/^age/y/a/â/' file 
-</code> 
- 
-rajoute un # au début de chaque ligne contenant le mot "swap" 
-<code bash> 
-sed '/swap/ s/^/#/g' /etc/fstab 
-</code> 
-==== Scripts ==== 
- 
-<code bash> 
-scriptsed.sh 
-sed -f scriptsed.sh passwd 
-Utilisation pour le fichier passwd 
-/^root/s/0:0/1337:1337/g;s/root/superuser/g 
-/^client/s/client,,,/client/g 
-/^client/s/1000:1000/1234:1234/g;s/client/toto/g 
-y/o/0/ 
-</code> 
-==== Rename ==== 
- 
-<code bash> 
-ls | sed -re "s/^anciennom(.*)/mv '&' 'nouveaunom\1'/" | sh 
-</code> 
- 
-<code bash> 
-for file in *.txt ; do mv $file `echo $file | sed 's/\(.*\)\.txt/\1/'` ; done 
-</code> 
-==== Between ==== 
-<code bash> 
-sed -n '/WORD1/,/WORD2/p' /path/to/file 
-</code> 
-supprimer le texte entre les lignes start et end 
-<code bash> 
-sed -i '/start/,/end/{//!d}' file 
-</code> 
-==== SED et Find ==== 
- 
-Recherche dans tout les fichiers d'une arborescence la chaine "toto" et la remplace par 
-"tutu" 
-<code bash> 
-find ./ -type f -exec sed -i -e 's/toto/tutu/g' {} \; 
-</code> 
-==== Misc ==== 
-Afficher la 15eme ligne:\\ 
-<code bash> 
-sed -n 15p 
-</code> 
-==== Backreference ==== 
-Rajoute un # devant chaque mot contenant "swap" 
-<code bash> 
-sed "s/\(.*swap\)/#\1/g" /etc/fstab 
- 
- 
-/dev/mapper/VG01-lv_root /               ext4    errors=remount-ro 0       1 
-/dev/mapper/VG01-lv_boot /boot           ext4    defaults        0       2 
-/dev/mapper/VG01-lv_var /var            ext4    defaults        0       2 
-#/dev/mapper/VG01-lv_swap none            #swap    sw              0       0 
-#Custom LVM 
-/dev/mapper/VG02-lvDATA /Data            ext4    defaults        0       2 
- 
-</code> 
-====== AWK ====== 
-print les lignes contenant la chaine "String" 
-<code bash> 
-> cat file | awk '/String/{ print $0 }' 
-String.toto = toto 
-String.tutu -> tutu 
-</code> 
-print la chaîne de caractères contenant la chaine "String" 
-<code bash> 
-> cat file | awk '{for(i=1;i<=NF;i++){if($i~/^String/){print $i}}}' 
-String.toto 
-String.tutu 
-</code> 
-print les lignes comprises entre les patterns Start et End 
-<code bash> 
-> awk '/End/{f=0;};f{print;};/Start/{f=1;}' 
-Start 
-String.toto = toto 
-String.tutu -> tutu 
-End 
-</code> 
-Ajoute une variable shell dans la commande SED 
-<code bash> 
-var="1234" 
-awk -v var="$var" 'print {var}' 
-</code> 
-{{tag>Unix Sed Awk Shell_scripting Regex Développement}} 
  • wiki/sed.et.awk.1525887637.txt.gz
  • Dernière modification: 2018/05/09 19:40
  • de root