need help bourne-again shell

need help bourne-again shell - Shell/Batch - Programmation

Marsh Posté le 15-03-2004 à 15:18:19    

salut!
je suis en galere.
je doit réaliser un utilitaire de gestion de données qui permet, à partir d'un fichier de données tabulées, de faire des requêtes et d'en visualiser le résultat sur la sortie standard.
 
Le script à réaliser doit être écrit en BASH (Bourne-Again SHell) en utilisant les utilitaires 'awk' et 'sed'. Chaque utilitaire UNIX doit être utilisé intelligemment, c'est à dire dans ce pour quoi il a été conçu. Pour rappel,'awk' manipule des enregistrements dans un fichier et 'sed' est un éditeur de
texte en ligne
 
Le probleme c que je debute en linux et je ne sai pa trop comment faire .
Nous aovns deja reussi a faire ceci :
 
#!/bin/sh
 
echo "bonjour"
echo "nbre d'arg" = $#
 
if [ $# -ne 3 ]
then
echo "pas bon nbre"
exit -1
fi
 
sed -e '/^#,*/d' -e 's/#.*$//' $1 | cut -f1,3
 
var = `echo $2 | sed -e 's/^SELECT//g' -e 's/WHERE.*//g'`
echo $var
 
kk un pourrai il nous aider et nous guider pour la suite?
 
merci

Reply

Marsh Posté le 15-03-2004 à 15:18:19   

Reply

Marsh Posté le 15-03-2004 à 16:29:01    

Quels sont les arguments passés au scrip ?
Quel est le format des requêtes ?
Quel est le format du fichier tabulé (champs..) ?


---------------
Jean Pierre.
Reply

Marsh Posté le 16-03-2004 à 18:20:43    

aigles a écrit :

Quels sont les arguments passés au scrip ?
Quel est le format des requêtes ?
Quel est le format du fichier tabulé (champs..) ?


 
 
le format du fichier est:
ID  Désignation Prix_unitaire   Stock
065 Savon de Marseille  2.00    30
780 Parachute   56.00   2
165 Obus de 125 1650.50 10
122 Sachet de cachuètes 1.90    40
 
Les mots-clefs sont SELECT, WHERE, AND, OR, les
parenthèses, les guillemets et les opérateurs de comparaison <, >, = et != .
Exemple de ligne de commande:
SELECT Prix_unitaire WHERE Stock > 3 AND ID != 165
 
SELECT permet de choisir les champs en sortie de la requête
WHERE sépare la commande SELECT du reste de la requête
 
 

Reply

Marsh Posté le 16-03-2004 à 18:23:55    

aigles a écrit :

Quels sont les arguments passés au scrip ?
Quel est le format des requêtes ?
Quel est le format du fichier tabulé (champs..) ?


 
 
On a essayer ce code ensuite:
 
i=1
numerochamp=0
trouve=0
 
premiereligne=`sed -e '2,$d' $1`
for var1 in $choixselect
do
    for var in $premiereligne
    do
 echo $i
 if [ $var = $var1 ]
 then
     trouve=`expr $trouve + 1`
     numerochamp=$i
     echo "ok"
 fi
 i=`expr $i + 1`
    done
done
 
 
echo "nbre d arguments trouves=" $trouve
echo "numero de le colonne trouvee" $numerochamp
 
case $numerochamp in
    1)
 montrercolonne=`awk 'NF>1 { print $1 } ' $1`
 echo $montrercolonne
 ;;
    2)
 montrercolonne=`awk 'NF>1 { print $2 } ' $1`
 echo $montrercolonne
 ;;
    3)
 montrercolonne=`awk 'NF>1 { print $3 } ' $1`
 echo $montrercolonne
 ;;
    4)
 montrercolonne=`awk 'NF>1 { print $4 } ' $1`
 echo $montrercolonne
 ;;
esac
 

Reply

Marsh Posté le 17-03-2004 à 12:10:54    

aigles a écrit :

Quels sont les arguments passés au scrip ?
Quel est le format des requêtes ?
Quel est le format du fichier tabulé (champs..) ?


 
l'appel du programme se fait par :
./nom_prog nom_fichier "SELECT champs WHERE a>b" -d
argument1 : nom_fichier
argument2 : SELECT...
arg3 : -d

Reply

Marsh Posté le 18-03-2004 à 02:00:52    

Voici un exemple de ce qui peut être fait ...
J'utilise AWK mais pas SED.
Je ne traite pas le troisieme argument '-d' car je ne sais pas à quoi il sert.
 
Je ne met pas le code ici (2 fichiers) car il est peut gros (environ 400 lignes avec pas mal de commentaires).  
Les deux fichiers de code sont disponibles aux adresses :
 
http://lcjp.freesurf.fr/Unix/Request.shl
http://lcjp.freesurf.fr/Unix/Request.awk
 
Le .shl fait appel au .awk
 
Le .tar contient les deux fichiers .shl et .awk
http://lcjp.freesurf.fr/Unix/Request.tar
 
On peut faire plus simple c'est sur, mais je me suis bien amusé.
 
Au fait dans quel cadre doit tu faire cet utilitaire ?
J'ai vu une message concernant le même exercice sur un autre forum (mais en anglais)
http://www.dbforums.com/t988292.html


Message édité par aigles le 18-03-2004 à 02:01:51

---------------
Jean Pierre.
Reply

Marsh Posté le 18-03-2004 à 16:38:46    

Merci bien
c'est très complet et très interessant
A++

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed