Aide sur AWK SVP
Caro
-
tafiscobar Messages postés 1281 Statut Contributeur -
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.
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
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
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..