Aide sur AWK SVP

Caro -  
tafiscobar Messages postés 1281 Statut Contributeur -
Bonjour à tous,
Voila j'ai un petit logiciel a faire avec awk et j'avoue je suis assez perdue a cause de mes lacunes...
Voici ce que je doit faire:

Créer un logiciel avec awk qui va interrogé une base de donnée (basé sur un fichier texte contenant les champs: NOM PRENOM ADRESSE CODE POSTE VILLE) et qui utilise les fonctions suivante:
bdrm : pour supprimer une entrée
bdfind: pour recherche une entrée
bdadd: pour ajouter une entrée

Ces fonctions sont bien sûr a créer et c'est la que j'ai un peu de mal.
Si quelqu'un peu me donner un tuyau, cela me serai d'une grande aide.

Merci.

2 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Tu ne dois utiliser que "awk" comme filtre ?
    0
    1. caro
       
      Oui je dois seulement utiliser awk comme filtre.
      Je pense que les fonctions que je dois créer doivent utiliser des commandes unix: pour le dbadd il faudrai la commande qui ajoute une ligne dans notre fichier de base de donnée..
      0
  2. tafiscobar Messages postés 1281 Statut Contributeur 177
     
    salut, pour ecrire dans un fichier en awk, il te suffit juste de faire un "print motaecrire >> fichier". Voici un exemple, ce n'est pas optimisé, mais ça te donnera une idée: Je considére qe le séparateur des champs c'est ";" et le séparateur des enregistrements c'est "\n".
    #!/usr/bin/awk -f
    #fichier dbadd
    usage () {
      print ("dbadd: dbadd <prenom> <adrese> <codepo> <vile>\n");
    }
     
    if (ARGC != 5)
       usage ();
    else # arguments = 5
       print ARGV[1] ";" ARGV[2] ";" ARGV[3] ";" ARGV[4] ";" ARGV[5] "\n" >> "db";
       close ("db");
    
    ## fichier dbrm
    #!/usr/bin/awk -f
    
    BEGIN {  if ARGC != 2 print "dbrm : dbrm <prenom_a_supprimer>";  else {FS =";" ;  RS="\n"; prenom = ARGV[1]}}
    {
       if ($1 == prenom)  
           next;
       print $0 >> "tmp";  
    }
    
    END { close ("db"); close ("tmp"); "cat tmp > db";}
    
    ## pour dbfind, c'est pareil, il suffit juste de l'adapter
    0