IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

remplir variables à base d'un fichier en input


Sujet :

Linux

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Points : 17
    Points
    17
    Par défaut remplir variables à base d'un fichier en input
    Salut à tous,
    je dispose d'un fichier de data comme input, il contient trois colonnes de données, les trois valeurs de chaque ligne de ce fichier seront exploitées par la suite pour construire un fichier de commandes..
    file_type:
    06485 123456 11/09/08
    06386 09856 08/01/07
    .
    .
    .
    etc

    donc j'ouvre le file_type:
    cat file_type| awk '/^[ 0-9]+$/{printf("object.modify,NBR=\"%s\",serial=\"%s\",DATE="$3 ";\n", $1,$2,$3)}' > commands
    j'imagine que c'est pas correct..

    le but est que mon fichier résultat (commands) soit rempli ainsi:
    à partir de la 1ère ligne du fichier file_type par exple, il faudrait construire la commande suivante:
    object.modify,NBR="06485",serial="123456",DATE="11/09/08";
    idem pour la 2ème ligne du fichier file_type:
    object.modify,NBR="06386",serial="09856",DATE="08/01/07";

    le problème qui se pose à moi, est commment traduire ça et comment renseigner les $1,$2,$3...

    Merci d'avance.

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Ce que tu fais est correct, sauf que /^[ 0-9]+$/ ne va pas matcher puisque tu as des / dans ta ligne. Suivant ce que tu veux matcher, tu peux faire par exemple /^[ 0-9/]+$/, ou bien /^[ 0-9]+/...

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Points : 17
    Points
    17
    Par défaut
    je n'ai pas compris ta proposition....

  4. #4
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Je ne vois pas comment je peux être plus clair... Tu vois le "/^[ 0-9]+$/" dans ta commande ? Et bien remplace-le par "/^[ 0-9/]+$/" (sans les guillemets).

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Points : 17
    Points
    17
    Par défaut
    Au fait, en ajoutant un champ:
    serv='test'

    je l'insère dans ma commande, et ça marche du tout pas, g essayé pas mal de trucs, en vain!

    cat file_type| awk '/^[ 0-9]+$/{printf("object.modify,NBR=\"%s\",SERV=\"'${serv}'\",serial=\"%s\",DATE="$3 ";\n", $1,$2,$3)}' > commands

    je sais plus quoi faire..
    sinon pour ta prpopositon, quand j'exécute, il m'affiche comme erreur:
    imbalance or syntax error Context is:
    >>> /^[ 0-9/ <<<

  6. #6
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Citation Envoyé par bezoindaidde Voir le message
    sinon pour ta prpopositon, quand j'exécute, il m'affiche comme erreur:
    imbalance or syntax error Context is:
    >>> /^[ 0-9/ <<<
    Donne nous la ligne de commande exacte que tu as utilisée. Tu est sous quel OS ?

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Points : 17
    Points
    17
    Par défaut
    la commande que j'ai indiquée est bien la commande que je teste..
    cat file_type| awk '/^[ 0-9]+$/{printf("object.modify,NBR=\"%s\",SERV=\"'${serv}'\",serial=\"%s\",DATE="$3 ";\n", $1,$2,$3)}' > commands

    il parait que j'ai également un problème qd je fais appel à la chaine :
    serv='test'

    il me retourne une erreur: string in Line 1

    et du coup, mon fichier commands est tjrs vide!

  8. #8
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Je crois qu'on ne va pas y arriver
    Je voulais dire la commande qui te donne le "imbalance or syntax error".

    Est-ce que tu as essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '/^[ 0-9/]+$/{printf("object.modify,NBR=\"%s\",serial=\"%s\",DATE="$3 ";\n", $1,$2,$3)}'

  9. #9
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Points : 17
    Points
    17
    Par défaut
    g reessayé de jouer ta commande, voilà l'erreur que ca me retourne:

    awk: /^[ 0-9/: [ ] imbalance or syntax error Context is:
    >>> /^[ 0-9/ <<<

  10. #10
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Ca j'ai compris, mais ça ne répond pas à ma question. Quelle est la commande exacte que tu as utilisé ? Copie-colle là ici.

    Je t'ai aussi demandé sous quel OS tu tournes. Le commande que je t'ai donné passe très bien avec gawk (GNU awk, sous linux). Par contre je viens d'essayer avec la commande awk d'AIX, et j'ai la même erreur que toi. Sous AIX il faut escaper le slash :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '/^[ 0-9\/]+$/{printf("object.modify,NBR=\"%s\",serial=\"%s\",DATE="$3 ";\n", $1,$2,$3)}'
    Donc tu vois, il est imprtant de savoir dans quel environement tu tournes... Quand on pose une question, essaie d'y répondre.

Discussions similaires

  1. [Débutant] Remplir Ma base Access depuis un fichier excel
    Par SDMAMIN dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/03/2012, 23h20
  2. SSIS remplir une base avec un fichier txt
    Par lerieure dans le forum SSIS
    Réponses: 9
    Dernier message: 12/04/2011, 08h04
  3. Comment remplir une base avec un fichier texte?
    Par cedricland dans le forum Débuter
    Réponses: 16
    Dernier message: 16/04/2009, 09h41
  4. remplir une base access avec un fichier .txt en VB.net
    Par altheorijinal dans le forum Windows Forms
    Réponses: 0
    Dernier message: 16/03/2009, 13h41
  5. Réponses: 3
    Dernier message: 29/03/2006, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo