awk, exemples commentés

Prochain UID disponible

Cette commande awk permet de connaître le prochain UID disponible :

#  getent passwd | awk -F':' ' BEGIN { nuid = 0 } { if (nuid < $3 && $3 != 65534) nuid = $3 } END { print nuid + 1 }'

Commentaires

  • On initialise la variable nuid à 0 (bloc BEGIN)
  • Pour chaque ligne, on test si le troisième champ (qui correspond à l'uid) est différent de celui réservé à nobody (ici 65534), et s'il est supérieur à nuid
  • Si l'UID courant est effectivement supérieur à nuid, on réattribue cette variable
  • Finalement (bloc END) on affiche l'uid maximun + 1

Afficher les lignes paires d'un fichier

awk '{ if (FNR % 2) print }' /etc/passwd

Note la numérotation de ligne commencant à 0, cela affiche (concrètement) les lignes 1,3,5 ..

Commentaires

FNR est une variable spéciale décrit comme suit dans la page de manuel : w

FNR         The input record number in the current input file

On utilise donc simplement l'opérateur modulo pour savoir si le numéro de ligne est paire ou pas.

Attention la variable FNR est une variable apportée par la version GNU de awk

 

Commentaires