need help bourne-again shell - Shell/Batch - Programmation
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..) ?
Marsh Posté le 16-03-2004 à 18:20:43
aigles a écrit : Quels sont les arguments passés au scrip ? |
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
Marsh Posté le 16-03-2004 à 18:23:55
aigles a écrit : Quels sont les arguments passés au scrip ? |
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
Marsh Posté le 17-03-2004 à 12:10:54
aigles a écrit : Quels sont les arguments passés au scrip ? |
l'appel du programme se fait par :
./nom_prog nom_fichier "SELECT champs WHERE a>b" -d
argument1 : nom_fichier
argument2 : SELECT...
arg3 : -d
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
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