Aide sur AWK SVP

Fermé
Caro - 17 juin 2005 à 10:19
tafiscobar Messages postés 1277 Date d'inscription jeudi 7 décembre 2000 Statut Contributeur Dernière intervention 26 février 2009 - 18 juin 2005 à 12:20
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

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
17 juin 2005 à 17:24
Salut,

Tu ne dois utiliser que "awk" comme filtre ?
0
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
tafiscobar Messages postés 1277 Date d'inscription jeudi 7 décembre 2000 Statut Contributeur Dernière intervention 26 février 2009 177
18 juin 2005 à 12:20
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