Traitement fichier avec SED ,AWK ou autres

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

A voir également:

2 réponses

jipicy Messages postés 41342 Statut Modérateur 4 896
 
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$
;-))
0
pcsystemd Messages postés 734 Statut Membre 23
 
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
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
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
;-))
0
pcsystemd Messages postés 734 Statut Membre 23
 
ok merci je test. Tu peux juste m'expliquer :

_&'/w

dans la ligne sed.
0
jipicy Messages postés 41342 Statut Modérateur 4 896 > pcsystemd Messages postés 734 Statut Membre
 
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

;-))
0
pcsystemd Messages postés 734 Statut Membre 23 > jipicy Messages postés 41342 Statut Modérateur
 
Ok.
& : traiter toutes les chaines mis en correspondances
w : Pour ecrire la substitution dans un fichier

Merci
0