next up previous contents
Next: Tableau associatifs en PERL Up: Examen Télécom 2 - Previous: Exercises de programmation KSH   Contents

Exercices de programmation AWK

Noubliez pas de commenter vos scripts AWK.

  1. Donnez le script AWK qui permet de compter le nombre de lignes qui commencent par la chaîne "POUET":

    ..

     
    #!/usr/bin/awk -f
    #affiche le nombre de lignes débutant par le mot POUET 
    BEGIN {print "bonjour"}
    
    /^POUET/ {nb_POUET++}
    
    END {print "Nombre de POUET:", nb_POUET}
    
    ..

  2. Donnez le script AWK qui permet d'afficher la taille totale en Kilo-Octets des fichiers du répertoire courant. Exemple (la commande `ls -l' affiche la taille en octet):

    [fourmaux@hobbes] ls -l 
    -rw-r--r--    909 Sep  3 17:50 utpt2-1a.aux
    -rw-r--r--   4844 Sep  3 17:50 utpt2-1a.dvi
    -rw-r--r--   7569 Sep  3 17:50 utpt2-1a.log
    [fourmaux@hobbes] somme_taille 
    total: 13Ko
    

    ..

     
    ls -lg FILES | awk '    { x += $5 }'
                        END { print "total K-bytes: " (x + 1023)/1024 }''
    
    ..

  3. Donnez le script AWK qui affiche les lignes qui contiennent la chaîne "__DEBUG" et recopie les lignes qui ne la contiennent pas dans un fichier avec le même nom que le fichier initial mais avec un suffixe `-d'. Exemple:
    [fourmaux@hobbes] cat source
    197  /* From rle_open_f.c. */
    198  extern FILE *rle_open_f();
    199  extern FILE *rle_open_test(); /*__DEBUG*/
    [fourmaux@hobbes] retire___DEBUG source 
    199  extern FILE *rle_open_test(); /*__DEBUG*/
    [fourmaux@hobbes] cat source-d
    197  /* From rle_open_f.c. */
    198  extern FILE *rle_open_f();
    

    ..

     
    #!/usr/bin/awk -f
    
    { 
        if ($0 ~ /__DEBUG/)
            print 
        else
            print >> ARGV[1]"-d" 
    }
    
    ..

  4. Donnez le script AWK qui retire tous les textes entre parenthèses. Exemple:
    [fourmaux@hobbes] cat avec_par.txt
    Texte (blablabla) entre parenthèses (comme
    ici par exemple) à retirer.
    [fourmaux@hobbes] retire_parentheses avec_par  
    Texte entre parenthèses 
    à retirer.
    
    ..
     
    #!/usr/bin/awk -f
    
    BEGIN {
        RS=")"; ORS="";
        FS="("; OFS="";
    }
    
    {
        print $1;
        if ($2 ~ /\n/) print "\n";
    }
    
    ..



Olivier Fourmaux 2001-10-26