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

Shell et commandes GNU Discussion :

Awk: afficher le champ x dans un fichier CSV.


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 371
    Par défaut Awk: afficher le champ x dans un fichier CSV.
    Bonjour,

    je fait la suite de mon petit script (cf. Awk: récupérer les variables dans un fichier csv.)

    Maintenant, je veux lire chaque champs de mon fichier CSV dont je connait le nombre de champs.

    je sait que cette ligne affiche le champs 1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    champ_recherche= `cat $import_regie | awk -F";" '{ print $0 }'`
    je sait que cette ligne affiche le champs 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    champ_recherche= `cat $import_regie | awk -F";" '{ print $1 }'`
    Mais comment faire pour lire les champs dans une boucle for, while...?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    nbr_champs=`echo $ligne | awk -F";" '{ print NF }'`
    while $nbr_champs > 0
    do
       champ_recherche= `cat $import_regie | awk -F";" '{ print $nbr_champs }'`
    echo $champ_recherche
    nbr_champs= nbr_champs - 1
    done

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    dis donc, t'en sais des choses !
    mais, tu les testes tes codes, ou c'est de l'ordre de la divination ?

    tu devrais prendre le temps de lire toutes les réponses qui t'ont été faites dans ton post précédent !

    un petit tour sur les pages man, ou du guide de l'utilisateur des commandes, que tu utilises, ne serait pas du luxe, non plus.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 362
    Par défaut
    Bonjour,

    Un exemple avec while:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ echo 'titi;toto;tata;tutu' | awk -F\; '{while(i++<NF){!X?Y="":Y="\n";X=X Y"champs:"i"=>valeur:"$i}}$0=X'
    champs:1=>valeur:titi
    champs:2=>valeur:toto
    champs:3=>valeur:tata
    champs:4=>valeur:tutu
    Bonne lecture

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour,

    Je sais
    Tu sais
    Il sait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    je sait que cette ligne affiche le champs 1:
    Faux. Cela affiche toute la ligne. Le cat est inutile.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    je sait que cette ligne affiche le champs 2:
    Faux. Cela affiche le champ 1. Le cat est inutile.

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par vandman Voir le message
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while $nbr_champs > 0
    do
       champ_recherche= `cat $import_regie | awk -F";" '{ print $nbr_champs }'`
    echo $champ_recherche
    nbr_champs= nbr_champs - 1
    done
    Bonjour

    Déjà cat fichier |awk ... est inutile puisque awk sait lire les fichiers => awk ... fichier (et ça t'avait déjà été dit ici). Moi aussi j'aime bien chainer des commandes par des tubes mais je ne le fais que quand je ne peux pas m'en passer.

    Ensuite ben commence peut-être par ouvrir (ne serait-ce qu'une fois dans ta vie) un livre de shell. Tu y apprendras, entre autres, comment écrire un while, son principe général (while commande), etc. Tu y apprendras aussi comment incrémenter/décrémenter une variable contenant un nombre, et l'utilité du caractère "$" quand on veut justement traiter des variables. Le plus triste c'est que un coup tu le mets, un coup tu le mets pas ce qui me fait ressentir un certain "jemenfoutisme" dans ta façon de coder. Ce qui alors, par ricochet, ne m'incite pas à m'investir plus que ça pour t'aider...

    Citation Envoyé par Flodelarab Voir le message
    Je sais
    Tu sais
    Il sait
    Tiens ? Content de voir que je ne suis pas le seul qui pense que l'orthographe a une certaine importance dans la communication écrite. +1 rien que pour ça.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    [HS=orthographe]
    Citation Envoyé par Sve@r Voir le message
    Tiens ? Content de voir que je ne suis pas le seul qui pense que l'orthographe a une certaine importance dans la communication écrite. +1 rien que pour ça.
    Ben... y a aussi moi! (sic!)
    Et Jipété qui le clame haut et fort dans son avatar et sa signature!

    Citation Envoyé par vandman Voir le message
    Maintenant, je veux lire chaque champs de mon fichier CSV dont je connait le nombre de champs.

    je sait que cette ligne affiche le champs 1:
    Je trouve qu'il y a beaucoup (en tout cas, beaucoup trop à mon goût!) de gens qui écrivent "le champ" avec un "s" à la fin.

    Peut-être confondent-ils avec "le temps"...

    Je milite donc pour qu'on écrive "le champ" sans "s" (au singulier). Na! Qu'on se le dise!
    [/HS=orthographe]

Discussions similaires

  1. Réponses: 12
    Dernier message: 10/04/2012, 10h28
  2. [MySQL] Exporter le contenu d'un champ email dans un fichier csv
    Par thamis dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 12/01/2010, 16h17
  3. Afficher, rechercher et remplacer dans un fichier
    Par lynal dans le forum Langage
    Réponses: 1
    Dernier message: 13/06/2006, 21h24
  4. Afficher tous les "cout" dans un fichier
    Par tibouchou dans le forum SL & STL
    Réponses: 6
    Dernier message: 18/03/2006, 12h08
  5. Afficher un champ memo dans un dbgrid
    Par CharleLéo dans le forum Bases de données
    Réponses: 2
    Dernier message: 24/11/2005, 17h21

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