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
A voir également:
- Traitement fichier avec SED ,AWK ou autres
- Fichier epub - Guide
- Fichier bin - Guide
- Traitement de texte - Guide
- Fichier .dat - Guide
- Fichier rar - 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