Scripts et programmes en AWK

Modification de la sortie d'un ls - l

Soit le script droits.awk suivant :
# Nicolas Pons (19/11/2004)
# Modifie l'affichage des droits Unix dans un `ls -l`.
# La notation symbolique est remplacée par de l'octal.
#
# Usage : ls -l | awk -f [ce fichier]

BEGIN {
        # Suppression de la 1ère ligne contenant "total" dans 
        # l'affichage du `ls -l`
        getline
        # Ajout d'une ligne d'entête
        print "---------- Début traitement AWK ----------"
}
{
        # Conversion notation symbolique -> octal
        gsub(/rwx/,7,$1)
        gsub(/rw-/,6,$1)
        gsub(/r-x/,5,$1)
        gsub(/r--/,4,$1)
        gsub(/-wx/,3,$1)
        gsub(/-w-/,2,$1)
        gsub(/--x/,1,$1)
        gsub(/---/,0,$1)
        # Affichage du résultat
        print $0
}
END {
        # Ajout d'une ligne en fin de traitement
        print "----------- Fin traitement AWK -----------"
}
Exemple d'exécution :
$ ls -l
total 32
-rw-r--r--    1 nicolas  users         816 Mar  2 11:14 droits.awk
-rw-r--r--    1 nicolas  users         570 Mar  2 11:13 droits.sed
-rw-r--r--    1 nicolas  users          81 Dec  6 16:12 fic1
-rw-r--r--    1 nicolas  users         119 Dec  6 16:15 fic2
-rw-r--r--    1 nicolas  users           7 Dec  6 15:25 fichier2
lrwxrwxrwx    1 nicolas  users           8 Dec  6 15:26 fichier3 -> fichier1
-rw-r--r--    1 nicolas  users          90 Mar  2 10:58 numeros
drwxr-xr-x    2 nicolas  users        4096 Dec  6 15:46 rep
drwxr-xr-x    3 nicolas  users        4096 Dec  6 16:52 ttt
$ ls -l | awk -f droits.awk 
---------- Début traitement AWK ----------
-644 1 nicolas users 816 Mar 2 11:14 droits.awk
-644 1 nicolas users 570 Mar 2 11:13 droits.sed
-644 1 nicolas users 81 Dec 6 16:12 fic1
-644 1 nicolas users 119 Dec 6 16:15 fic2
-644 1 nicolas users 7 Dec 6 15:25 fichier2
l777 1 nicolas users 8 Dec 6 15:26 fichier3 -> fichier1
-644 1 nicolas users 90 Mar 2 10:58 numeros
d755 2 nicolas users 4096 Dec 6 15:46 rep
d755 3 nicolas users 4096 Dec 6 16:52 ttt
----------- Fin traitement AWK -----------

Comptage de mots dans un fichier

Le script awk_occur retourne le nombre d'occurrences de chaque mot contenu dans le fichier passé en argument :
$ cat fichier
a bb ccc ddd aa bb a ddd
ccc ddd aa aaa a bbb ddd
aaa ddd cc dd aaa bb c a
b bb dd cc aa c d b d dd
$ cat awk_occur
awk '
  {
    for (i=1 ; i <= NF ; i++){
      tab[$i]++
    }
  }
  END     {
  for (mot in tab){
      print mot, "\t affiché \t", tab[mot], "\t fois"
    }
  }' $1
$ awk_occur fichier 
a        affiché         4       fois
bb       affiché         4       fois
ccc      affiché         2       fois
ddd      affiché         5       fois
aa       affiché         3       fois
aaa      affiché         3       fois
bbb      affiché         1       fois
cc       affiché         2       fois
dd       affiché         3       fois
c        affiché         2       fois
b        affiché         2       fois
d        affiché         2       fois