Vous avez trouvé cette page utile, Vous pouvez l'obtenir ici au format kindle (amazon).
-F | Spécifie les séparateurs de champs | |
-v | Définie une variable utilisée à l'intérieur du programme. | |
-f | Les commandes sont lu à partir d'un fichier. |
On accède à chaque champs de l'enregistrement courant par la variable $1, $2, ... $NF. $0 correspond à l'enregistrement complet. La variable NF contient le nombre de champs de l'enregistrement courant, la variable $NF correspond donc au dernier champs.
awk -F ":" '{ $2 = "" ; print $0 }' /etc/passwd |
imprime chaque ligne du fichier /etc/passwd après avoir effacé le deuxième champs |
awk 'END {print NR}' fichier |
imprime le nombre total de lignes du fichiers |
awk '{print $NF}' fichier |
imprime le dernier champs de chaque ligne |
who | awk '{print $1,$5}' |
imprime le login et le temps de connexion. |
awk 'length($0)>75 {print}' fichier |
imprime les lignes de plus de 75 caractères. (print équivaur à print $0) |
Variable | Signification | Valeur par défaut |
---|---|---|
ARGC | Nombre d'arguments de la ligne de commande | - |
ARGV | tableau des arguments de la ligne de commnde | - |
FILENAME | nom du fichier sur lequel on applique les commandes | - |
FNR | Nombre d'enregistrements du fichier | - |
FS | separateur de champs en entrée | " " |
NF | nombre de champs de l'enregistrement courant | - |
NR | nombre d'enregistrements deja lu | - |
OFMT | format de sortie des nombres | "%.6g" |
OFS | separateur de champs pour la sortie | " " |
ORS | separateur d'enregistrement pour la sortie | "\n" |
RLENGTH | longueur de la chaine trouvée | - |
RS | separateur d'enregistrement en entrée | "\n" |
RSTART | debut de la chaine trouvée | - |
SUBSEP | separateur de subscript | "\034" |
awk 'BEGIN { print "Verification des UID et GID dans le fichier /etc/passwd"; FS=":"} $3 !~ /^[0-9][0-9]*$/ {print "UID erreur ligne "NR" :\n"$0 } $4 !~ /^[0-9][0-9]*$/ {print "GID erreur ligne "NR" :\n"$0 } END { print "Fin" } ' /etc/passwdRésultat :
awk 'BEGIN { print "Verification du fichier /etc/passwd pour ..."; print "- les utilisateurs avec UID = 0 " ; print "- les utilisateurs avec UID >= 60000" ; FS=":"} $3 == 0 { print "UID 0 ligne "NR" :\n"$0 } $3 >= 60000 { print "UID >= 60000 ligne "NR" :\n"$0 } END { print "Fin" } ' /etc/passwdRésultat :
awk 'BEGIN { print "Verification du fichier /etc/group"; print "le groupe 20 s'appelle t-il bien users ? " ; FS=":"} $1 == "users" && $3 ==20 { print "groupe "$1" a le GID "$3" !" } END { print "Fin" } ' /etc/groupRésultat :
awk 'NR == 5 , NR == 10 {print NR" : " $0 }' fichierImprime de la ligne 5 à la ligne 10 , chaque ligne précédée par son numéro
Nom des fonctions | signification |
---|---|
atan2(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 |
Nom des fonctions | signification | |
---|---|---|
gsub(r,s,t) | sur la chaine t, remplace toutes les occurance de r par s | |
index(s,t) | retourne la position la plus à gauche de la chaine t dans la chaine s | |
length(s) | retourne la longueur de la chaine s | |
match(s,r) | retourne l'index ou s correspond à r et positionne RSTART et RLENTH | |
split(s,a,fs) | split s dans le tableau a sur fs, retourne le nombre de champs | |
sprintf(fmt,liste expressions) | retourne la liste des expressions formattée suivant fmt | |
sub(r,s,t) | comme gsub, mais remplce uniquement la première occurence | |
substr(s,i,n) | retourne la sous chaine de s commencant en i et de taille n |
Rappel : Les champs de la ligne courant sont : $1, $2, ..., $NF
La ligne entière est $0
Ces variables ont les memes propriétés que Les autres variables. Elles peuvent
etre reaffectées. Quand $0 est modifiées, les variables $1,$2 ... sont aussi
modifiées ainsi que NF.Inversement si une des variables $i est modifiées, $0
est mise à jour.
Les champs peuvent etre specifiés par des expressions, comme $(NF-1) pour l'avant
dernier champs.
awk 'BEGIN { FS=":" ; OFS=":"} $NF != "/bin/ksh" { print $0 } $3 == "/bin/ksh" && NF == 7 { $7 = "/bin/posix/sh" ; print $0 } ' /etc/passwd > /etc/passwd.newRésultat :
Il n'y a pas d'opérateur de concaténation, il faut simplement lister les chaines
à concaténer.
awk '{ print NR " : " $0 }' fichierRésultat :
awk 'BEGIN { FS=":" ; OFS=":" ; print " Run Level 2 : Liste des actions "} $2 ~ /2/ { print "Keyword <<"$3">>, \n Tache <<"$4">>" } $2 == "" { print "Keyword <<"$3">>, \n Tache <<"$4">>" } ' /etc/inittab > /etc/passwd.newRésultat :
specifieur | signification |
d | nombre decimal |
s | chaine de caractères |
specifieur | signification |
- | expression justifiée à gauche |
largeur | largeur d'affichage |
.precision | longueur maximale d'une chaine de caracteres ou nombre de decimales |
awk ' { print NR " :" , $0 > "fich.numerote" } ' fichier | le fichier fich.numerote contient le fichier fichier avec
les lignes numérotées
|
awk ' { printf "%3d : %s " , NR , $0 > "fich.numerote" } ' fichier | le fichier fich.numerote contient le fichier fichier avec
les lignes numérotées sur 3 caractères
|
awk 'BEGIN { print "Mémorisation de votre fichier " FILENAME } {memfile [NR] = $0 } END { for ( i = NR ; i >= 1 ; i-- ) { print i ":" memfile[i] } print "Fin" } ' fichierRésultat :
awk ' NF > 0 { for (i=1;i<=NF;i++) { if ( $i ~ /^[0-9a-zA-Z][0-9a-zA-Z]*$/ ) { index[$i] = index[$i] ";" NR "," i " " ; index["total"]++ ; } } } END { x="total" ; printf("%s mots detectés = %d\n",x,index[x]); } ' fichierRésultat :
for (var in tableau) action
awk ' NF > 0 { for (i=1;i<=NF;i++) { if ( $i ~ /^[0-9a-zA-Z][0-9a-zA-Z]*$/ ) { index[$i] = index[$i] ";" NR "," i " " ; index["total"]++ ; } } } END { for ( x in index ) { if ( x != "total" ) printf("%-20s\t%s\n",x,index[x]) | "sort -f " } x="total"; printf("%s mots detectés = %d\n",x,index[x]); } ' fichierRésultat :
awk 'BEGIN { print "Mémorisation de votre fichier " FILENAME SUBSEP=":" } { for ( i=1 ; i <=NF ; i++ ) { memfields[ NR , i ] = $i } } END { for ( i in memfields ) { print i ":" memfields[i] | "sort -n -t: " } print "Fin" } ' fichierRésultat :
Obtenir l'aide mémoire Unix au format pdf
© Isabelle Vollant
(http://www.shellunix.com)
mise à jour le 30/07/12