Académique Documents
Professionnel Documents
Culture Documents
Awk Sed
Awk Sed
sed
awk
Administration Linux
Les commandes complexes: grep, awk and sed
Victor OYETOLA
Université d’Abomey-Calavi
Juillet 2022
1 grep
Présentation de grep
Expressions régulières
Les options de grep
Utilisation de grep
2 sed
Présentation de sed
Commandes usuelles de sed
utilisation de sed
3 awk
Présentation de awk
awk par l’exemple
Les fonctions dans awk
Présentation de grep
grep provient de l’anglais (global regular expression and print)
les commandes grep, vi, awk, expr et sed utilisent:
les Expressions Régulières Basiques (ERb)
les Expressions Régulières Etendues (ERe)
grep permet de rechercher dans un fichier les lignes contenant un
mot, série de mots, une ERb ou une ERe (avec l’option -E )donnés
en argument et de les afficher
l’option -E est aussi intégré dans la version étendue de grep : (egrep)
grep en action
1 grep -E -i paris\|vosges dep.txt (expression régulière et casse ignoré)
grep en action
1 grep -E -i paris\|vosges dep.txt (expression régulière et casse ignoré)
2 grep -e ’^0’ -e ’s$’ dep.txt (Afficher les lignes commençant par un 0 ou se
terminant par un s)
grep en action
1 grep -E -i paris\|vosges dep.txt (expression régulière et casse ignoré)
2 grep -e ’^0’ -e ’s$’ dep.txt (Afficher les lignes commençant par un 0 ou se
terminant par un s)
3 grep -v ’^9’ file (afficher les lignes ne commençant pas par 9)
grep en action
1 grep -E -i paris\|vosges dep.txt (expression régulière et casse ignoré)
2 grep -e ’^0’ -e ’s$’ dep.txt (Afficher les lignes commençant par un 0 ou se
terminant par un s)
3 grep -v ’^9’ file (afficher les lignes ne commençant pas par 9)
4 grep -n ’^11’ file (afficher et numeroter les lignes commençant par 11)
grep en action
1 grep -E -i paris\|vosges dep.txt (expression régulière et casse ignoré)
2 grep -e ’^0’ -e ’s$’ dep.txt (Afficher les lignes commençant par un 0 ou se
terminant par un s)
3 grep -v ’^9’ file (afficher les lignes ne commençant pas par 9)
4 grep -n ’^11’ file (afficher et numeroter les lignes commençant par 11)
5 grep -c -e ’^0’ -e ’s$’ file (afficher seulement le nombre de ligne trouver)
grep en action
1 grep -E -i paris\|vosges dep.txt (expression régulière et casse ignoré)
2 grep -e ’^0’ -e ’s$’ dep.txt (Afficher les lignes commençant par un 0 ou se
terminant par un s)
3 grep -v ’^9’ file (afficher les lignes ne commençant pas par 9)
4 grep -n ’^11’ file (afficher et numeroter les lignes commençant par 11)
5 grep -c -e ’^0’ -e ’s$’ file (afficher seulement le nombre de ligne trouver)
6 grep -w COTE file (affiche les lignes contenant le mot COTE et non COTES)
grep en action
1 grep -E -i paris\|vosges dep.txt (expression régulière et casse ignoré)
2 grep -e ’^0’ -e ’s$’ dep.txt (Afficher les lignes commençant par un 0 ou se
terminant par un s)
3 grep -v ’^9’ file (afficher les lignes ne commençant pas par 9)
4 grep -n ’^11’ file (afficher et numeroter les lignes commençant par 11)
5 grep -c -e ’^0’ -e ’s$’ file (afficher seulement le nombre de ligne trouver)
6 grep -w COTE file (affiche les lignes contenant le mot COTE et non COTES)
7 grep ’..’ file (afficher les lignes contenant au moins 2 caractères)
grep en action
1 grep -E -i paris\|vosges dep.txt (expression régulière et casse ignoré)
2 grep -e ’^0’ -e ’s$’ dep.txt (Afficher les lignes commençant par un 0 ou se
terminant par un s)
3 grep -v ’^9’ file (afficher les lignes ne commençant pas par 9)
4 grep -n ’^11’ file (afficher et numeroter les lignes commençant par 11)
5 grep -c -e ’^0’ -e ’s$’ file (afficher seulement le nombre de ligne trouver)
6 grep -w COTE file (affiche les lignes contenant le mot COTE et non COTES)
7 grep ’..’ file (afficher les lignes contenant au moins 2 caractères)
8 grep -f filegrep.txt dep.txt (les motifs à rechercher sont dans le fichier filegrep)
grep en action
1 grep -E -i paris\|vosges dep.txt (expression régulière et casse ignoré)
2 grep -e ’^0’ -e ’s$’ dep.txt (Afficher les lignes commençant par un 0 ou se
terminant par un s)
3 grep -v ’^9’ file (afficher les lignes ne commençant pas par 9)
4 grep -n ’^11’ file (afficher et numeroter les lignes commençant par 11)
5 grep -c -e ’^0’ -e ’s$’ file (afficher seulement le nombre de ligne trouver)
6 grep -w COTE file (affiche les lignes contenant le mot COTE et non COTES)
7 grep ’..’ file (afficher les lignes contenant au moins 2 caractères)
8 grep -f filegrep.txt dep.txt (les motifs à rechercher sont dans le fichier filegrep)
9 egrep -x ’[0-9]+’ file (Avec -x le critère est une ligne entière: ici les lignes contenant
des chiffres)
grep en action
1 grep -E -i paris\|vosges dep.txt (expression régulière et casse ignoré)
2 grep -e ’^0’ -e ’s$’ dep.txt (Afficher les lignes commençant par un 0 ou se
terminant par un s)
3 grep -v ’^9’ file (afficher les lignes ne commençant pas par 9)
4 grep -n ’^11’ file (afficher et numeroter les lignes commençant par 11)
5 grep -c -e ’^0’ -e ’s$’ file (afficher seulement le nombre de ligne trouver)
6 grep -w COTE file (affiche les lignes contenant le mot COTE et non COTES)
7 grep ’..’ file (afficher les lignes contenant au moins 2 caractères)
8 grep -f filegrep.txt dep.txt (les motifs à rechercher sont dans le fichier filegrep)
9 egrep -x ’[0-9]+’ file (Avec -x le critère est une ligne entière: ici les lignes contenant
des chiffres)
10 egrep ’^[0-9]+$’ file ( Même résultat que la ligne précédente mais sans l’option -x)
Victor OYETOLA Administration Linux 7 / 27
grep Présentation de sed
sed Commandes usuelles de sed
awk utilisation de sed
Présentation de sed
sed provient du terme anglais Stream EDitor. C’est un outil
généralement utilisé pour effectuer des modifications dans un fichier
de données de type texte (comme remplacer un mot ou une
expression par une autre, ...).
utilisation et syntaxe
sed -e ’liste_d_instructions’ fichier_à_traiter
sed -f fichier_script fichier_à_traiter
avec l’option -e , utiliser les apostrophes simples ou double,
permet aussi d’utiliser aussi plusieurs commandes à la fois
sed -e ’commande1’ -e ’commande2’ .....
utilisation et syntaxe
sed -e ’liste_d_instructions’ fichier_à_traiter
sed -f fichier_script fichier_à_traiter
avec l’option -e , utiliser les apostrophes simples ou double,
permet aussi d’utiliser aussi plusieurs commandes à la fois
sed -e ’commande1’ -e ’commande2’ .....
avec -n , sed fonctionne en mode silencieux et n’affiche que les
lignes explicitement demandées (ex: sed -n ’/3[0-9]\{4\}/p’ dep2012.txt)
utilisation et syntaxe
sed -e ’liste_d_instructions’ fichier_à_traiter
sed -f fichier_script fichier_à_traiter
avec l’option -e , utiliser les apostrophes simples ou double,
permet aussi d’utiliser aussi plusieurs commandes à la fois
sed -e ’commande1’ -e ’commande2’ .....
avec -n , sed fonctionne en mode silencieux et n’affiche que les
lignes explicitement demandées (ex: sed -n ’/3[0-9]\{4\}/p’ dep2012.txt)
avec -i sed modifiera directement le fichier fournit en paramètre
utilisation et syntaxe
sed -e ’liste_d_instructions’ fichier_à_traiter
sed -f fichier_script fichier_à_traiter
avec l’option -e , utiliser les apostrophes simples ou double,
permet aussi d’utiliser aussi plusieurs commandes à la fois
sed -e ’commande1’ -e ’commande2’ .....
avec -n , sed fonctionne en mode silencieux et n’affiche que les
lignes explicitement demandées (ex: sed -n ’/3[0-9]\{4\}/p’ dep2012.txt)
avec -i sed modifiera directement le fichier fournit en paramètre
avec -r sed utilise les expressions régulières standards
(ex: sed -n -r ’/3[0-9]{4}/p’ dep2012.txt)
utilisation et syntaxe
sed -e ’liste_d_instructions’ fichier_à_traiter
sed -f fichier_script fichier_à_traiter
avec l’option -e , utiliser les apostrophes simples ou double,
permet aussi d’utiliser aussi plusieurs commandes à la fois
sed -e ’commande1’ -e ’commande2’ .....
avec -n , sed fonctionne en mode silencieux et n’affiche que les
lignes explicitement demandées (ex: sed -n ’/3[0-9]\{4\}/p’ dep2012.txt)
avec -i sed modifiera directement le fichier fournit en paramètre
avec -r sed utilise les expressions régulières standards
(ex: sed -n -r ’/3[0-9]{4}/p’ dep2012.txt)
sed en action
sed -i ’/Finance/i Comptabilité, 1003’ File (insertion avant Finance)
sed en action
sed -i ’/Finance/i Comptabilité, 1003’ File (insertion avant Finance)
sed ’s/^/Fruit: /’ file (Insérer Fruit en début de chaque ligne)
sed en action
sed -i ’/Finance/i Comptabilité, 1003’ File (insertion avant Finance)
sed ’s/^/Fruit: /’ file (Insérer Fruit en début de chaque ligne)
sed ’s/$/ Fruit/’ file (Insérer Fruit en fin de chaque ligne)
sed en action
sed -i ’/Finance/i Comptabilité, 1003’ File (insertion avant Finance)
sed ’s/^/Fruit: /’ file (Insérer Fruit en début de chaque ligne)
sed ’s/$/ Fruit/’ file (Insérer Fruit en fin de chaque ligne)
sed ’s/a/A/2’ file (Remplacer à partir de la 2eme occurence)
sed en action
sed -i ’/Finance/i Comptabilité, 1003’ File (insertion avant Finance)
sed ’s/^/Fruit: /’ file (Insérer Fruit en début de chaque ligne)
sed ’s/$/ Fruit/’ file (Insérer Fruit en fin de chaque ligne)
sed ’s/a/A/2’ file (Remplacer à partir de la 2eme occurence)
sed -e "s![Ll]inux!<B>&</B>!g" (encadre linux ou Linux par la balise <B>)
sed en action
sed -i ’/Finance/i Comptabilité, 1003’ File (insertion avant Finance)
sed ’s/^/Fruit: /’ file (Insérer Fruit en début de chaque ligne)
sed ’s/$/ Fruit/’ file (Insérer Fruit en fin de chaque ligne)
sed ’s/a/A/2’ file (Remplacer à partir de la 2eme occurence)
sed -e "s![Ll]inux!<B>&</B>!g" (encadre linux ou Linux par la balise <B>)
sed -e ’s/\([0-9]*\)-\([0-9]*\)-\([0-9]*\)/\3-\2-\1/’ <<< 16-05-2017
(change le format de la date de JJ-MM-AAAA à AAAA-MM-JJ)
sed en action
sed -i ’/Finance/i Comptabilité, 1003’ File (insertion avant Finance)
sed ’s/^/Fruit: /’ file (Insérer Fruit en début de chaque ligne)
sed ’s/$/ Fruit/’ file (Insérer Fruit en fin de chaque ligne)
sed ’s/a/A/2’ file (Remplacer à partir de la 2eme occurence)
sed -e "s![Ll]inux!<B>&</B>!g" (encadre linux ou Linux par la balise <B>)
sed -e ’s/\([0-9]*\)-\([0-9]*\)-\([0-9]*\)/\3-\2-\1/’ <<< 16-05-2017
(change le format de la date de JJ-MM-AAAA à AAAA-MM-JJ)
sed en action
sed -i ’/Finance/i Comptabilité, 1003’ File (insertion avant Finance)
sed ’s/^/Fruit: /’ file (Insérer Fruit en début de chaque ligne)
sed ’s/$/ Fruit/’ file (Insérer Fruit en fin de chaque ligne)
sed ’s/a/A/2’ file (Remplacer à partir de la 2eme occurence)
sed -e "s![Ll]inux!<B>&</B>!g" (encadre linux ou Linux par la balise <B>)
sed -e ’s/\([0-9]*\)-\([0-9]*\)-\([0-9]*\)/\3-\2-\1/’ <<< 16-05-2017
(change le format de la date de JJ-MM-AAAA à AAAA-MM-JJ)
sed en action
sed -i ’/Finance/i Comptabilité, 1003’ File (insertion avant Finance)
sed ’s/^/Fruit: /’ file (Insérer Fruit en début de chaque ligne)
sed ’s/$/ Fruit/’ file (Insérer Fruit en fin de chaque ligne)
sed ’s/a/A/2’ file (Remplacer à partir de la 2eme occurence)
sed -e "s![Ll]inux!<B>&</B>!g" (encadre linux ou Linux par la balise <B>)
sed -e ’s/\([0-9]*\)-\([0-9]*\)-\([0-9]*\)/\3-\2-\1/’ <<< 16-05-2017
(change le format de la date de JJ-MM-AAAA à AAAA-MM-JJ)
sed en action
sed -i ’/Finance/i Comptabilité, 1003’ File (insertion avant Finance)
sed ’s/^/Fruit: /’ file (Insérer Fruit en début de chaque ligne)
sed ’s/$/ Fruit/’ file (Insérer Fruit en fin de chaque ligne)
sed ’s/a/A/2’ file (Remplacer à partir de la 2eme occurence)
sed -e "s![Ll]inux!<B>&</B>!g" (encadre linux ou Linux par la balise <B>)
sed -e ’s/\([0-9]*\)-\([0-9]*\)-\([0-9]*\)/\3-\2-\1/’ <<< 16-05-2017
(change le format de la date de JJ-MM-AAAA à AAAA-MM-JJ)
sed en action
1 sed -n -e ’/3[0-9]\{4\}/w depts3’ -e ’/6[0-9]\{4\}/w depts6’ dep.txt
(copie les lignes contenant 3XXXX dans le fichier depts3 et celles contenant 6XXXX dans
le fichier depts6 où X ∈ [0 − 9])
sed en action
1 sed -n -e ’/3[0-9]\{4\}/w depts3’ -e ’/6[0-9]\{4\}/w depts6’ dep.txt
(copie les lignes contenant 3XXXX dans le fichier depts3 et celles contenant 6XXXX dans
le fichier depts6 où X ∈ [0 − 9])
2 sed ’s/telephone/fax/2’ file (remplace seulement la 2eme occurence du mot
telephone par fax )
sed en action
1 sed -n -e ’/3[0-9]\{4\}/w depts3’ -e ’/6[0-9]\{4\}/w depts6’ dep.txt
(copie les lignes contenant 3XXXX dans le fichier depts3 et celles contenant 6XXXX dans
le fichier depts6 où X ∈ [0 − 9])
2 sed ’s/telephone/fax/2’ file (remplace seulement la 2eme occurence du mot
telephone par fax )
3 sed -n ’1,4p’ file (affiche les lignes de 1 à 4)
sed en action
1 sed -n -e ’/3[0-9]\{4\}/w depts3’ -e ’/6[0-9]\{4\}/w depts6’ dep.txt
(copie les lignes contenant 3XXXX dans le fichier depts3 et celles contenant 6XXXX dans
le fichier depts6 où X ∈ [0 − 9])
2 sed ’s/telephone/fax/2’ file (remplace seulement la 2eme occurence du mot
telephone par fax )
3 sed -n ’1,4p’ file (affiche les lignes de 1 à 4)
4 sed ’18,25d’ file (effacer les lignes de 18 à 25)
sed en action
1 sed -n -e ’/3[0-9]\{4\}/w depts3’ -e ’/6[0-9]\{4\}/w depts6’ dep.txt
(copie les lignes contenant 3XXXX dans le fichier depts3 et celles contenant 6XXXX dans
le fichier depts6 où X ∈ [0 − 9])
2 sed ’s/telephone/fax/2’ file (remplace seulement la 2eme occurence du mot
telephone par fax )
3 sed -n ’1,4p’ file (affiche les lignes de 1 à 4)
4 sed ’18,25d’ file (effacer les lignes de 18 à 25)
5 sed ’1,3!d’ (supprimer les toutes les lignes sauf de 1 à 3)
sed en action
1 sed -n -e ’/3[0-9]\{4\}/w depts3’ -e ’/6[0-9]\{4\}/w depts6’ dep.txt
(copie les lignes contenant 3XXXX dans le fichier depts3 et celles contenant 6XXXX dans
le fichier depts6 où X ∈ [0 − 9])
2 sed ’s/telephone/fax/2’ file (remplace seulement la 2eme occurence du mot
telephone par fax )
3 sed -n ’1,4p’ file (affiche les lignes de 1 à 4)
4 sed ’18,25d’ file (effacer les lignes de 18 à 25)
5 sed ’1,3!d’ (supprimer les toutes les lignes sauf de 1 à 3)
6 sed -n ’/Debut/,/Fin/p’ (afficher les lignes comprises entre les mots Debut et Fin)
sed en action
1 sed -n -e ’/3[0-9]\{4\}/w depts3’ -e ’/6[0-9]\{4\}/w depts6’ dep.txt
(copie les lignes contenant 3XXXX dans le fichier depts3 et celles contenant 6XXXX dans
le fichier depts6 où X ∈ [0 − 9])
2 sed ’s/telephone/fax/2’ file (remplace seulement la 2eme occurence du mot
telephone par fax )
3 sed -n ’1,4p’ file (affiche les lignes de 1 à 4)
4 sed ’18,25d’ file (effacer les lignes de 18 à 25)
5 sed ’1,3!d’ (supprimer les toutes les lignes sauf de 1 à 3)
6 sed -n ’/Debut/,/Fin/p’ (afficher les lignes comprises entre les mots Debut et Fin)
7 sed -e "s/tati?/toto/g" (remplacer les mots tat ou tati par toto)
sed en action
1 sed -n -e ’/3[0-9]\{4\}/w depts3’ -e ’/6[0-9]\{4\}/w depts6’ dep.txt
(copie les lignes contenant 3XXXX dans le fichier depts3 et celles contenant 6XXXX dans
le fichier depts6 où X ∈ [0 − 9])
2 sed ’s/telephone/fax/2’ file (remplace seulement la 2eme occurence du mot
telephone par fax )
3 sed -n ’1,4p’ file (affiche les lignes de 1 à 4)
4 sed ’18,25d’ file (effacer les lignes de 18 à 25)
5 sed ’1,3!d’ (supprimer les toutes les lignes sauf de 1 à 3)
6 sed -n ’/Debut/,/Fin/p’ (afficher les lignes comprises entre les mots Debut et Fin)
7 sed -e "s/tati?/toto/g" (remplacer les mots tat ou tati par toto)
8 sed -e "s/tata+/toto/g"(: remplacer tata tataa tataaaa etc. par toto)
sed en action
1 sed -n -e ’/3[0-9]\{4\}/w depts3’ -e ’/6[0-9]\{4\}/w depts6’ dep.txt
(copie les lignes contenant 3XXXX dans le fichier depts3 et celles contenant 6XXXX dans
le fichier depts6 où X ∈ [0 − 9])
2 sed ’s/telephone/fax/2’ file (remplace seulement la 2eme occurence du mot
telephone par fax )
3 sed -n ’1,4p’ file (affiche les lignes de 1 à 4)
4 sed ’18,25d’ file (effacer les lignes de 18 à 25)
5 sed ’1,3!d’ (supprimer les toutes les lignes sauf de 1 à 3)
6 sed -n ’/Debut/,/Fin/p’ (afficher les lignes comprises entre les mots Debut et Fin)
7 sed -e "s/tati?/toto/g" (remplacer les mots tat ou tati par toto)
8 sed -e "s/tata+/toto/g"(: remplacer tata tataa tataaaa etc. par toto)
9 sed -i -re ’/=/s/([A-Za-z]+)=(0|1)/\2=>\1/’ file (intervertir variable et valeur
dans file)
Victor OYETOLA Administration Linux 12 / 27
grep Présentation de awk
sed awk par l’exemple
awk Les fonctions dans awk
awk vs sed
awk est un langage de programmation puissant pour la manipulation
de fichiers texte.
Awk manipule les champs, agit comme sed
Sed manipule les lignes
awk :
est approprié pour les calculs numériques,
utilise des variables, des structures de contrôle et des boucles
présente une flexibilité dans l’affichage des données
intègre des fonctions arithmetiques
permet la manipulation des chaînes de caractères
utilise la même syntaxe que le langage C
exécuter awk
awk ’program ’ input_file(s) où program et input_file(s) sont
fournis comme arguments
awk ’program’ l’entrée provient de l’entrée standard
awk -f program_file input_files le programme provient d’un
fichier.
exécuter awk
awk ’program ’ input_file(s) où program et input_file(s) sont
fournis comme arguments
awk ’program’ l’entrée provient de l’entrée standard
awk -f program_file input_files le programme provient d’un
fichier.
awk consiste en :
Un block BEGIN (optionnel) à exécuter avant le traitement des
données
Une paire condition { action } qui, pour chaque condition
remplie, l’action correspondante est exécutée
Un block END (optionnel) a éxécuter à la fin du traitement
structures de awk
BEGIN {action}
condition {action}
condition {action}
.
.
.
condition { action}
END {action}
condition et action
En l’absence de condition , l’action s’exécute sur toutes les
lignes ex: awk ’{print $1,$2}’ file (affiche les champs 1 et 2)
En l’absence de l’action chaque lignes qui remplissant la
condition est affichée ex: awk ’$2==“rouge”’ file (affiche les lignes où
champ2=rouge)
Les Variables
Awk peut définir et utiliser des variables
ex: awk ’BEGIN {sum=0}; { sum+= $2}; END{print “somme= ”sum }’ file
Certaines variables sont prédéfinies:
RS : Record Separator, par défaut c’est une nouvelle ligne mais
vous pouvez le changer dans le block BEGIN (pas très utile)
Les Variables
Awk peut définir et utiliser des variables
ex: awk ’BEGIN {sum=0}; { sum+= $2}; END{print “somme= ”sum }’ file
Certaines variables sont prédéfinies:
RS : Record Separator, par défaut c’est une nouvelle ligne mais
vous pouvez le changer dans le block BEGIN (pas très utile)
NR : Number of Record, il représente le numero de
l’enregistrement courant ex: awk ’NR<3’ file
Les Variables
Awk peut définir et utiliser des variables
ex: awk ’BEGIN {sum=0}; { sum+= $2}; END{print “somme= ”sum }’ file
Certaines variables sont prédéfinies:
RS : Record Separator, par défaut c’est une nouvelle ligne mais
vous pouvez le changer dans le block BEGIN (pas très utile)
NR : Number of Record, il représente le numero de
l’enregistrement courant ex: awk ’NR<3’ file
FS : Field Separator, Il peut être également précisé par l’option -F
Les Variables
Awk peut définir et utiliser des variables
ex: awk ’BEGIN {sum=0}; { sum+= $2}; END{print “somme= ”sum }’ file
Certaines variables sont prédéfinies:
RS : Record Separator, par défaut c’est une nouvelle ligne mais
vous pouvez le changer dans le block BEGIN (pas très utile)
NR : Number of Record, il représente le numero de
l’enregistrement courant ex: awk ’NR<3’ file
FS : Field Separator, Il peut être également précisé par l’option -F
OFS : Output Field Separator, permet de changer le séparateur à
l’affichage ex: awk -F: ’{print $1,$2,$3}’ OFS=“# ”file
Les Variables
Awk peut définir et utiliser des variables
ex: awk ’BEGIN {sum=0}; { sum+= $2}; END{print “somme= ”sum }’ file
Certaines variables sont prédéfinies:
RS : Record Separator, par défaut c’est une nouvelle ligne mais
vous pouvez le changer dans le block BEGIN (pas très utile)
NR : Number of Record, il représente le numero de
l’enregistrement courant ex: awk ’NR<3’ file
FS : Field Separator, Il peut être également précisé par l’option -F
OFS : Output Field Separator, permet de changer le séparateur à
l’affichage ex: awk -F: ’{print $1,$2,$3}’ OFS=“# ”file
$0 à $n: $0 représente un enrégistrement tout entier tandis que
$1 à $n représente chaque champ de 1 à n
Les Variables
Awk peut définir et utiliser des variables
ex: awk ’BEGIN {sum=0}; { sum+= $2}; END{print “somme= ”sum }’ file
Certaines variables sont prédéfinies:
RS : Record Separator, par défaut c’est une nouvelle ligne mais
vous pouvez le changer dans le block BEGIN (pas très utile)
NR : Number of Record, il représente le numero de
l’enregistrement courant ex: awk ’NR<3’ file
FS : Field Separator, Il peut être également précisé par l’option -F
OFS : Output Field Separator, permet de changer le séparateur à
l’affichage ex: awk -F: ’{print $1,$2,$3}’ OFS=“# ”file
$0 à $n: $0 représente un enrégistrement tout entier tandis que
$1 à $n représente chaque champ de 1 à n
NF : Number of Field, le nombre de champs à la ligne courante
Victor OYETOLA Administration Linux 18 / 27
grep Présentation de awk
sed awk par l’exemple
awk Les fonctions dans awk
ls | awk ’
BEGIN { print "List of html files:" }
/\.html$/ { print }
END { print "There you go!" }
’
ls | awk ’
BEGIN { print "List of html files:" }
/\.html$/ { print }
END { print "There you go!" }
’
awk ’
BEGIN { sum = 0 }
{ sum +=$2 }
END { print sum }
’
cat file awk ’{print $1}’ file awk ’{print $2}’ file awk ’{print $0}’ file
Name Domain Name Domain Name Domain
Deepak Banking Deepak Banking Deepak Banking
Neha Telecom Neha Telecom Neha Telecom
Vijay Finance Vijay Finance Vijay Finance
Guru Migration Guru Migration Guru Migration
cat file1 awk -F":" ’{print $1}’ file1 awk -F: ’{print $1,$3}’ file1
Name:Domain:Expertise Name Name Expertise
Deepak: Banking:MQ Deepak Deepak MQ
Neha:Telecom:Power Neha Neha Power
Vijay: Finance:CRM Vijay Vijay CRM
Guru: Migration:Unix Guru Guru Unix
awk -F"," ’{x+=$2;print}END{print "Total,"x}’ file2 awk -F, ’{if(a[$1]<$2)a[$1]=$2;}END{for(i in a){print i,a[
Item1,200 Item1,600
Item2,500 Item2,800
Item3,900 Item3,900
Item2,800
Item1,600
Item3,100
Total,3100
cat file3 awk ’$0 ˜ /Rent/{print}’ file3 awk -F, ’$1=="Rent" ’ file3
Medicine,200 Rent,900 Rent,900
Grocery,500 awk -F, ’$1 ˜ /Rent/’ file3 awk ’/Rent|Medicine/’ file3
Rent,900 Rent,900 Medicine,200
Grocery,800 awk ’/Rent/print’ file3 Rent,900
Medicine,600 Rent,900 Medicine,600
awk -F, ’$2>500’ file awk -F, ’$1 == "Medicine"{print $2}’ file3 awk -F, ’!/Medicine/’ file3
Rent,900 200 awk -F, ’$1 ! ˜ /Medicine/’ fi
Grocery,800 600 Grocery,500
Medicine,600 awk -F, ’/Medicine/ && $2>500’ file Rent,900
Medicine,600 Grocery,800
cat file awk -F, ’{$1=++i FS $1;}1’ OFS=, file awk -F, ’{$(NF+1)=++i;}1’ OFS=, file
Unix,10,A 1,Unix,10,A Unix,10,A,1
Linux,30,B 2,Linux,30,B Linux,30,B,2
Solaris,40,C 3,Solaris,40,C Solaris,40,C,3
Fedora,20,D 4,Fedora,20,D Fedora,20,D,4
Ubuntu,50,E 5,Ubuntu,50,E Ubuntu,50,E,5
awk -F, ’{$2+=10;}1’ OFS=, file4 awk -F, ’{$1=toupper($1)}1’ OFS=, file4
Unix,20,A UNIX,10,A
Linux,40,B LINUX,30,B
Solaris,50,C SOLARIS,40,C
Fedora,30,D FEDORA,20,D
Ubuntu,60,E UBUNTU,50,E
Fonctions numériques
Fonctions Signification
tan2(y,x) arctangente de x/y en redians dans l’interval -pi pi
cos(x) cosinus (en radians)
exp(x) exponentielle e à la puissance x
int(x) valeur entière
log(x) logarythme naturel
rand() nombre aléatoire entre 0 et 1
sin(x) sinus (en radians)
sqrt(x) racine carrée
srand(x) reinitialiser le générateur de nombre aléatoire