man gawk
awk vient de ses 3 auteurs Aho, Weinberger et Kernighan.
Il peut être classé dans la catégorie des filtres. Mais c'est beaucoup plus qu'un utilitaire de gestion des fichiers textes, il intégre un langage interprété très voisin du C. gawk =GNU awk; il s'agit d'une version plus performante.
sed, s'applique à un fichier, ou à un flot de données provenant de son entrée, si le fichier (précédé de -f) est absent. Il lit ce fichier ligne par ligne (toutes les lignes par défaut). Les lignes sont séparées par des retour-chariots.
séparateur.-F":", par exemple, ou invoqué dans le motif d'une expression rationnelle./etc/passwd supposé bien connu.login:x:uid:gid:commentaire:home:shell
gawk -F":" 'bloc-programme' /etc/passwd
-F":" signale que le caractère séparateur est ":" dans ce fichier. {} s'appliquera à chaque ligne. Il contient souvent print, l'instruction d'affichage sur la sortie standard, et des chaines constantes entourées de " ".print, seul, affiche toute la ligne et insère un retour-chariot.gawk -F":" '{print "Ligne n° " NR "=" $0}' /etc/passwd $0), précédées de leur numéro (contenu dans NR)gawk -F":" '{print}' /etc/passwd
gawk suivant ":" en 7 champs, dont les valeurs individuelles sont affectées aux variables système $1, $2 ... jusqu'au dernier.gawk -F":" '{print "Le répertoire personnel de " $1 " est " $6}' /etc/passwd toto:x:520:521:Monsieur Toto Jules:/home/toto:/bin/bash, elle fera afficher :
gawk -F":" '{print "Le nombre de champs = " NF " et le dernier vaut " $NF }' /etc/passwd NF, ici 7, et la valeur du dernier champ peut alors être référencée par $NF
gawk -F":" '{print "Premier champ : "$1 " ; print "Et dernier : $NF }' /etc/passwd print fait passer à la ligne.
gawk -F":" '{ if ($3 >= 500 ) print "login " $1 " uid = " $3 " rép perso : " $6}' /etc/passwd users.txt
==, la différence avec !=) ainsi que les opérateurs booléens : && (et), || (ou) , ! (non)gawk -F":" '{ if ($3 >= 500 && substr( $1, 0, 1)== "j") print NR "login " $1 " uid = " $3 " rép perso : " $6}' /etc/passwd $3>=500) et commençant par la lettre "j". En effet, l'appel à la fonction prédéfinie substr( $1, 0, 1) extrait une sous-chaine du nom ($1) à partir du 1er caractère (numéro 0) et sur une longueur 1, autrement dit l'initiale du nom.
gawk -F":" ' $1 ~/^[a-fj]/ { print NR $0 }' /etc/passwd ... La suite, prochainement ...