case in blabla (KSH) ===> fichier CSV - Shell/Batch - Programmation
Marsh Posté le 16-03-2010 à 16:52:00
tiens, ca faisait longtemps que j'avais pas vu un export vtom...
t'as quoi comme code pour le moment? (a part ton sed?)
Marsh Posté le 16-03-2010 à 17:58:48
Si j'ai bien compris :
tu peux parcourir ton fichier
Code :
|
1. Tu nies les lignes vides
2. Tu coupes sur ":" => debut=$(echo $line | cut -d ":" -f1)
si $debut = '[app' => t'es dans un nouveau bloc => tu commences à construire la ligne que tu vas ajouter à ton CSV.
Tant que tu n'es pas dans un nouveau bloc, tu coupes sur "=" (cut -d "=" -f2-)
=> tu ajoutes la valeurs à ta ligne précédée d'un ";"
3. Quand tu arrives dans un nouveau bloc => tu ajoutes ta ligne dans ton CSV et tu recommences à construire ta ligne
4. Après avoir lu tout ton fichier, tu ajoutes la ligne à ton CSV (puisque tu n'entreras plus dans un nouveau bloc)
Marsh Posté le 17-03-2010 à 09:02:05
tu sais quoi ben c'est ske j'ai fait en fin de journée après avoir posé proprement l'algo merci encore !
Marsh Posté le 18-03-2010 à 09:11:15
voila une partie du code juste pour gerer [app:
Code :
|
Marsh Posté le 23-03-2010 à 10:31:04
J'étais parti à bricoler un truc bizarre avec un AWK piqué des hannetons mais ta solution me semble bien plus propre et claire ^^
Jayjay !
Marsh Posté le 16-03-2010 à 15:21:56
Bien le bonjour,
Voilà mon "petit" problème
j'ai une fichier texte de cette forme : (Des blocs de longueurs fixe) qui s'apelle pour mon exemple totototo.txt
[app:EAI_GP/0292_STOP_TSK_TR]
mode=job
heure_debut=00:00:00
heure_fin=24:00:00
type_periodicite=demande
cyclique=non
cycle=00:00:00
periodicite=Journaliere
status=A_VENIR
fstatus=A_VENIR
derniere_exec=03-11-2009 22:14:16
derniere_exec_fin=03-11-2009 22:15:01
derniere_date=05-11-2009
derniere_stat=04-11-2009
ne_pas_deplanifier=oui
attendre_avant_deplanification=non
jobs=IS_Stop_TR,EAIG_StopSup_TR
nombre_de_jobs=2
dfl_node=90x26
link_diag=1/1
geometrie=150x26+175+600
sbgclr=Blue
slblclr=White
sdrwlbl=2
sshape=5
planning=EAI_GP/0292_STOP_TSK_TR
[app:EAI_GP/0292_STAR_TSK_TR]
mode=job
heure_debut=00:00:00
heure_fin=24:00:00
type_periodicite=demande
cyclique=non
cycle=00:00:00
periodicite=Journaliere
status=A_VENIR
fstatus=A_VENIR
derniere_exec=04-11-2009 05:09:32
derniere_exec_fin=04-11-2009 05:09:52
derniere_date=05-11-2009
derniere_stat=04-11-2009
ne_pas_deplanifier=oui
attendre_avant_deplanification=non
jobs=IS_Start_TR,EAIG_StartSup_TR
nombre_de_jobs=2
dfl_node=90x26
link_diag=1/1
geometrie=150x26+255+600
sbgclr=Blue
slblclr=White
sdrwlbl=2
sshape=5
planning=EAI_GP/0292_STAR_TSK_TR
je réalise le traitement suivant :
qui me permet de virer 4 lignes que je ne veux pas
ensuite,
je fais ca
je crée un fichier avec mes en-tête de colonne pour mon futur fichier CSV
et la je veux remplir ce fichier texte en respectant l'ordre des en-tete de colonne que j'viens de lui donner d'après les blocs de données que j'ai donné plus haut
tout ca dans le but d'avoir un fichier texte en sortie (délimité par des ";" )
avec toutes mes colonnes remplies en fonction de mes blocs.
J'ai bien essayé avec switch et case pour chaque cas en affectant differentes variables pour recuperer les info que j'voulais mais sans succes, si une personne voudrait bien m'aider...
Cordialement
Bonne fin de journée