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 :

[AWK] Récuperation de 2 champs


Sujet :

Linux

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 168
    Points : 52
    Points
    52
    Par défaut [AWK] Récuperation de 2 champs
    Bonjour à tous,

    J'ai un fichier formaté comme suit :

    champs1;champs2;champs3;champs4;champs5;champs6

    Je dois récuperer le champs 2 et 5 et les inserer dans une table d'une base
    Je dois donc écrire un script (certainement une commande AWK) pour lire le fichier ligne pas ligne, durant chaque lecture je récupère le champs 2 pour le mettre dans une 1ere variable puis récuperer le champs 5 pour le mettre dans une 2eme variable

    Est ce que ceci est possible ?

    est-ce que je peux ecrire une requête SQL dans une commande AWK ou je dois exporter les 2 variables à l'exterieur de la commande AWK ?

    Merci

  2. #2
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 319
    Points : 144
    Points
    144
    Par défaut
    Bonjour

    Voici un exemple de script que j'ai fait pour faire la même chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    while READ ligne
    do
    val1=`echo $ligne|awk -F"|" '{printf ("%d",$1)}'`
    val2=`echo $ligne|awk -F"|" '{printf ("%s",$2)}'`
    ...
    val12=`echo $ligne|awk -F"|" '{if(NF>=13){printf ("%d",$13)} else {print "null"}}'`
    ....
    echo INSERT INTO nom_de_table
    echo "values (val1,'val2',....);"
    done<fichier_entre>fichier_de_sortie.sql
    Si tu veux des explications n'hesite pas.

  3. #3
    Membre averti Avatar de fransoo
    Inscrit en
    Novembre 2009
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 209
    Points : 300
    Points
    300
    Par défaut
    Une version bash, en changeant l'IFS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/bin/bash
    IFS=';'
    while read C1 C2 C3 C4 C5 C6
    do
        echo "Champ2='$C2' - Champ5='$C5'"
        # Effectuer les opérations sur la table ...
    done < fichier
    Sinon, cut est une alternative à awk
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/bin/bash
    while read L
    do
        C2=$(echo "$L" | cut -d';' -f2)
        C5=$(echo "$L" | cut -d';' -f5)
        # opérations ...
    done < fichier

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 84
    Points : 90
    Points
    90
    Par défaut
    Ca serait dommage de faire une boucle while read, car cela va ralentir le traitement. Si le fichier est petit ça va, mais s'il est gros...

    En effet, ni awk ni cut n'ony pas besoin de faire cette boucle; par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat file | awk -F";" '{print $2" "$5}'
    Pour le SQL ç'est une autre histoire...

Discussions similaires

  1. parcourir 2 fichiers avec awk, et comparer 2 champs
    Par morphdown dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 09/07/2013, 11h03
  2. [POO] Récuperation automatique du champs d'un formulaire
    Par AliJava dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/05/2008, 11h35
  3. [VBA]Récuperer nom des champs
    Par fabiolous dans le forum VBA Access
    Réponses: 7
    Dernier message: 11/06/2007, 11h58
  4. Problème awk pour récuperer des champs
    Par ab_2006 dans le forum Shell et commandes GNU
    Réponses: 15
    Dernier message: 21/09/2006, 09h36
  5. Récuperer le 2eme champ d'une liste déroulante
    Par priest69 dans le forum Access
    Réponses: 2
    Dernier message: 07/09/2005, 19h07

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