Traitement fichier avec SED ,AWK ou autres
Fermé
pcsystemd
Messages postés
700
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
29 juillet 2024
-
10 juil. 2008 à 09:45
pcsystemd Messages postés 700 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 29 juillet 2024 - 10 juil. 2008 à 16:46
pcsystemd Messages postés 700 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 29 juillet 2024 - 10 juil. 2008 à 16:46
A voir également:
- Traitement fichier avec SED ,AWK ou autres
- Fichier rar - Guide
- Fichier host - Guide
- Fichier iso - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
2 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
10 juil. 2008 à 11:03
10 juil. 2008 à 11:03
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$;-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
10 juil. 2008 à 13:07
10 juil. 2008 à 13:07
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;-))
pcsystemd
Messages postés
700
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
29 juillet 2024
23
10 juil. 2008 à 15:30
10 juil. 2008 à 15:30
ok merci je test. Tu peux juste m'expliquer :
_&'/w
dans la ligne sed.
_&'/w
dans la ligne sed.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
>
pcsystemd
Messages postés
700
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
29 juillet 2024
10 juil. 2008 à 16:29
10 juil. 2008 à 16:29
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
;-))
pcsystemd
Messages postés
700
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
29 juillet 2024
23
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
10 juil. 2008 à 16:46
10 juil. 2008 à 16:46
Ok.
& : traiter toutes les chaines mis en correspondances
w : Pour ecrire la substitution dans un fichier
Merci
& : traiter toutes les chaines mis en correspondances
w : Pour ecrire la substitution dans un fichier
Merci
10 juil. 2008 à 12:33
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