Script Shell pour parser un fichier txt
Résolu/Fermé
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
-
25 sept. 2008 à 18:10
pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 - 3 oct. 2008 à 09:20
pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 - 3 oct. 2008 à 09:20
A voir également:
- Script Shell pour parser un fichier txt
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Script vidéo youtube - Guide
- Ouvrir un fichier .bin - Guide
6 réponses
Utilisateur anonyme
25 sept. 2008 à 19:17
25 sept. 2008 à 19:17
coucouille,
çà sent le awk tout çà ...
j'ai commencé un peu à tripatouiller ton fichier, mais je ne suis pas une star du awk mais j'obtiens un début de réponse : on doit pouvoir beaucoup plus simple à mon avis ....
=> cat new | awk '{FS="|"; print "il y a "$2" news pour le nom "$1" en date du "$3""""}'
çà donne pour le moment :
il y a 986541 news pour le nom toto_tu en date du 2008-09-15
il y a 8954 news pour le nom liste_tu en date du 2008-09-15
il y a liste_ta news pour le nom tat_te en date du 81062
il y a 4926458 news pour le nom toto_tu en date du 2008-09-15
il y a 133346389 news pour le nom news_autre en date du 2008-09-15
il y a tata_te news pour le nom en date du 3440070
il y a news pour le nom en date du
reste à revoir au niveau des champs car apparement ils ne sont pas toujours dans le même ordre ...
++
Poulpoul
çà sent le awk tout çà ...
j'ai commencé un peu à tripatouiller ton fichier, mais je ne suis pas une star du awk mais j'obtiens un début de réponse : on doit pouvoir beaucoup plus simple à mon avis ....
=> cat new | awk '{FS="|"; print "il y a "$2" news pour le nom "$1" en date du "$3""""}'
çà donne pour le moment :
il y a 986541 news pour le nom toto_tu en date du 2008-09-15
il y a 8954 news pour le nom liste_tu en date du 2008-09-15
il y a liste_ta news pour le nom tat_te en date du 81062
il y a 4926458 news pour le nom toto_tu en date du 2008-09-15
il y a 133346389 news pour le nom news_autre en date du 2008-09-15
il y a tata_te news pour le nom en date du 3440070
il y a news pour le nom en date du
reste à revoir au niveau des champs car apparement ils ne sont pas toujours dans le même ordre ...
++
Poulpoul
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
23
26 sept. 2008 à 09:15
26 sept. 2008 à 09:15
Merci beaucoup ça me donne déjà une idée.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
26 sept. 2008 à 11:53
26 sept. 2008 à 11:53
Salut,
en fait ton affichage n'est pas correct puisque 986541 n'est pas le nombre mais le numéro
il demande nombre de numéro
en fait ton affichage n'est pas correct puisque 986541 n'est pas le nombre mais le numéro
il demande nombre de numéro
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
23
1 oct. 2008 à 15:55
1 oct. 2008 à 15:55
Je vais essayé de mieux m'expliquer.
Il y a 5 champs séparés par un | .Le premier champ peut être vide ou non vide :
Je souhaite pouvoir formater mon fichier de sorte a pouvoir l'utiliser pour faire un INSERT INTO dans ma BD.
Mon fichier de sortie doit être de la sorte :
Exemple :
INSERT INTO Information (prov, name, home, date, tdr) VALUES ('', 'list_a', 84465, '10-Jan-1999', 0)
INSERT INTO Information (prov, name, home, date, tdr) VALUES ('', 'list_b', 81669, '10-Jan-1999', 5197 )
INSERT INTO Information (prov, name, home, date, tdr) VALUES ('Loc_sio', 'list_a', 84465, '10-Jan-1999', 0)
Merci
Mon fichier texte comporte un grand nombre de lignes de ce style : |list_a|84465|2008-09-15|0 |list_b|81669|2008-09-15|5197 Loc_sio|liste_agence|84465|2008-09-15|0 |list_a|170694006|2008-09-15|0 |list_b|83255|2008-09-15|11323 |det_b|85083|2008-09-15|9609
Il y a 5 champs séparés par un | .Le premier champ peut être vide ou non vide :
|list_a|84465 |2008-09-15 |0 |list_b|81669 |2008-09-15|5197 Loc_sio|list_a|84465 |2008-09-15|0 |list_a|170694006|2008-09-15|0 |list_b|83255 |2008-09-15|11323 |det_b|85083 |2008-09-15|9609
Je souhaite pouvoir formater mon fichier de sorte a pouvoir l'utiliser pour faire un INSERT INTO dans ma BD.
Mon fichier de sortie doit être de la sorte :
Exemple :
|list_a|84465 |2008-09-15|0 |list_b|81669 |2008-09-15|5197 Loc_sio|list_a|84465 |2008-09-15|0
INSERT INTO Information (prov, name, home, date, tdr) VALUES ('', 'list_a', 84465, '10-Jan-1999', 0)
INSERT INTO Information (prov, name, home, date, tdr) VALUES ('', 'list_b', 81669, '10-Jan-1999', 5197 )
INSERT INTO Information (prov, name, home, date, tdr) VALUES ('Loc_sio', 'list_a', 84465, '10-Jan-1999', 0)
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
1 oct. 2008 à 16:57
1 oct. 2008 à 16:57
Salut,
;-))
[tmpfs]$ cat pcsystemd |list_a|84465 |2008-09-15|0 |list_b|81669 |2008-09-15|5197 Loc_sio|list_a|84465 |2008-09-15|0 [tmpfs]$ cat foo.sh #! /bin/bash IFS="|" while read -a line do echo "INSERT INTO Information (prov, name, home, date, tdr) VALUES ('${line[0]}', '${line[1]}', '${line[2]}', '$(date --date="${line[3]}" +%d-%b-%Y)', '${line[4]}')" done < <(sed 's/[ [:space:]]//g' pcsystemd) [tmpfs]$ ./foo.sh INSERT INTO Information (prov, name, home, date, tdr) VALUES ('', 'list_a', '84465', '15-sep-2008', '0') INSERT INTO Information (prov, name, home, date, tdr) VALUES ('', 'list_b', '81669', '15-sep-2008', '5197') INSERT INTO Information (prov, name, home, date, tdr) VALUES ('Loc_sio', 'list_a', '84465', '15-sep-2008', '0') [tmpfs]$PS. Enlever l'espace entre les crochets ouvrants de [ [:space:]]
;-))
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
23
3 oct. 2008 à 09:20
3 oct. 2008 à 09:20
Merci cela fonctionne nickel.