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
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
A voir également:
- Traitement fichier avec SED ,AWK ou autres
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
2 réponses
Salut,
Une façon de faire :
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$;-))
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
;-))
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
;-))
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