Traitement fichier avec SED ,AWK ou autres
pcsystemd
Messages postés
734
Statut
Membre
-
pcsystemd Messages postés 734 Statut Membre -
pcsystemd Messages postés 734 Statut Membre -
Bonjour,
voila je souhaite utiliser un fichier afin de faire un update dans ma base de données. Le contenu de mon fichier est :
GHO_FB_5633
1245
65
254
123
985
2564
etc..
J'ai besoin de recuperer tous les nombres qui sont sous GHO_FB_5633 et puis pouvoir faire un update d'un champ de ma table pour chacun de ses nombres :
ex :
update maTable set champ=6 where code= mon fichier
Est ce possible ?
ou alors comment faire pour traiter mon fichier afin de le formater de la sorte avec SED ou AWK ou autre:
fichier d'origine :
GHO_FB_5633
1245
65
254
123
985
2564
etc..
fichier traité :
update maTable set champ=6 where code= 1245
update maTable set champ=6 where code= 65
update maTable set champ=6 where code= 254
update maTable set champ=6 where code= 123
update maTable set champ=6 where code= 985
update maTable set champ=6 where code= 2564
Avez vous une idée?
Merci beaucoup
--
L'accès au savoir est la première liberté que chaque homme devrait avoir.
voila je souhaite utiliser un fichier afin de faire un update dans ma base de données. Le contenu de mon fichier est :
GHO_FB_5633
1245
65
254
123
985
2564
etc..
J'ai besoin de recuperer tous les nombres qui sont sous GHO_FB_5633 et puis pouvoir faire un update d'un champ de ma table pour chacun de ses nombres :
ex :
update maTable set champ=6 where code= mon fichier
Est ce possible ?
ou alors comment faire pour traiter mon fichier afin de le formater de la sorte avec SED ou AWK ou autre:
fichier d'origine :
GHO_FB_5633
1245
65
254
123
985
2564
etc..
fichier traité :
update maTable set champ=6 where code= 1245
update maTable set champ=6 where code= 65
update maTable set champ=6 where code= 254
update maTable set champ=6 where code= 123
update maTable set champ=6 where code= 985
update maTable set champ=6 where code= 2564
Avez vous une idée?
Merci beaucoup
--
L'accès au savoir est la première liberté que chaque homme devrait avoir.
Configuration: Linux Debian Mozilla 1.8.1.14
2 réponses
-
Salut,
Une façon de faire :jp@MDK:~/tmpfs ssh$ cat fichier.txt GHO_FB_5633 1245 65 254 123 985 2564 etc.. jp@MDK:~/tmpfs ssh$ cat foo.sh #! /bin/bash #set -xv while read line do grep '^[0-9]' <<<${line} >/dev/null if [ "$?" != 0 ] then continue else echo "update maTable set champ=6 where code= ${line}" >> resultat.txt fi done < fichier.txt jp@MDK:~/tmpfs ssh$ ./foo.sh jp@MDK:~/tmpfs ssh$ cat resultat.txt update maTable set champ=6 where code= 1245 update maTable set champ=6 where code= 65 update maTable set champ=6 where code= 254 update maTable set champ=6 where code= 123 update maTable set champ=6 where code= 985 update maTable set champ=6 where code= 2564 jp@MDK:~/tmpfs ssh$ou bien avec sed directement :jp@MDK:~/tmpfs ssh$ cat fichier.txt GHO_FB_5633 1245 65 254 123 985 2564 jp@MDK:~/tmpfs ssh$ sed -n '1d;s/.*/update maTable set champ=6 where code= &/w sortie.txt' fichier.txt jp@MDK:~/tmpfs ssh$ cat sortie.txt update maTable set champ=6 where code= 1245 update maTable set champ=6 where code= 65 update maTable set champ=6 where code= 254 update maTable set champ=6 where code= 123 update maTable set champ=6 where code= 985 update maTable set champ=6 where code= 2564 jp@MDK:~/tmpfs ssh$
;-))
-
Merci beaucoup jipicy c'est bien cela qu'il me faut mais j'ai oublié un détail en faites mes utilisateurs dependent aussi d'un code groupe du style :
303
110
505
donc moi ce que j'ai fait dans mon script c'est un bloc :
[code]if [ "${USER}" == "toto" ]
then
REPMAJ="toto"
CODERES="303"
elif [ "${USER}" == "tata" ]
then
REPMAJ="tata"
CODERES="110"
elif [ "${USER}" == "titi" ]
then
REPMAJ="titi"
CODERES="505"
fi
/code
il faut donc pour l'update que la ligne soit de la sorte :
update maTable set champ=6 where code='303_1245' ou update maTable set champ=6 where code='110_1245' ou update maTable set champ=6 where code='505_1245'
Merci
-
-
Ben il suffit de définir et de rajouter une variable "CODERES" soit dans le script "bash" soit dans la ligne de "sed" :
CODERES=xxx echo "update maTable set champ=6 where code='${CODERES}_ ${line}" >> resultat.txt CODERES=xxx sed -n "1d;s/.*/update maTable set champ=6 where code='${CODE}_&'/w sortie.txt" fichier.txt;-))
-
- Pour l'éperluette (&) voir : http://www.commentcamarche.net/faq/sujet 9559 sed introduction a sed part ii#le metacaractere
Pour le "w" (flag write) voir : http://www.commentcamarche.net/faq/sujet 9536 sed introduction a sed part i#flags
Pour le "w", ici c'est une option de la commande de substitution "s", mais il existe aussi en tant que commande, voir : http://www.commentcamarche.net/faq/sujet 9536 sed introduction a sed part i#les commandes basiques 2
;-))
-