Forum Programmation.shell Formater fichier de sortie vers colonnes CSV

Posté par  . Licence CC By‑SA.
Étiquettes :
1
30
juil.
2019

Bonjour à tous,

Je cherche de l'aide.
J'ai un fichier généré par SQL, sur lequel j'aimerai séparer les lignes existantes, vers un format de type "Colonne CSV".
Je sais que SQL peut sortir un CSV directement, mais les contraintes de l'environnement sur lequel je travaille m'obligent à passer par un fichier "temporaire"
Je n'arrive pas à trouver la bonne technique pour modifier ce formatage.

Ci-dessous l'exemple de fichier, je souhaite le "transformer" en un CSV séparé par des "," par exemple:


*************************** 1. row ***************************
Modifié le: 2019-06-25 09:11:15
Etat: USED
Type: PC
Nom: NAME
Lieu: PARIS
Utilisateur: DUPONT PATRICK
N° de série: AABBCCDD
N° IMMO: 123456
Marque: HP
Modèle: MODELE
Acquisition: 2019-06-18
Remarques: Commentaires
Mise à jour BIOS: 2019-06-24
*************************** 2. row ***************************
Modifié le: 2019-06-25 09:11:26
Etat: STOCK
Type: PC
Nom: NAME2
Lieu: MARSEILLE
Utilisateur: DUPONT SOPHIE
N° de série: EEFFGGHH
N° IMMO: 789000
Marque: DELL
Modèle: INSPIRON
Acquisition: 2019-06-19
Remarques: Commentaires Bis
Mise à jour BIOS: 2019-06-25


La première colonne doit être "Modifié le"
La première ligne doit être "*************************** 1. row ***************************"
Idem pour la seconde ligne (et les lignes suivantes quand il y'en aura)

Une âme charitable pour m'aider ?

  • # awk

    Posté par  (site web personnel) . Évalué à 1.

    Ce serait effectivement plus simple de le faire directement depuis ton client sql, ce que tu demandes est faisable en utilisant la commande awk.

  • # awk

    Posté par  . Évalué à 2.

    Pour moi, le meilleur outil dans ton cas serais awk, puisqu'il te faut travailler sur plusieurs lignes.

    À l'arrache et sans tests, je dirais que le script devrais ressembler à un truc de ce goût là:

    /^\*/ {
    printf "\n"
    }
    /^[^*]/ {
    printf "%s\t", substr( $1, 0, index( $1, ':' ) )
    }
    END {
    printf "\n"
    }

    Je doute que ça juste marche, mais en bidouillant un peu et en t'aidant de ce lien tu devrais t'en sortir.
    Bon, la sortie n'affiche pas les noms des colonnes, mais ça ne devrais pas être trop compliqué à faire.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.