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

  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 706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 706
    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.

  3. #3
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 404
    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 404
    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 299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 299
    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 871
    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 871
    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]

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 299
    Par défaut
    Ben... y a aussi moi! (sic!)
    Je prends le pouce levé quand même

    [HS=orthographe]
    Ben... y a aussi moi! (sic!)
    Citation Envoyé par cnrtl.fr
    Ainsi dans le texte, aussi étrange et/ou incorrect qu'il paraisse.
    "Sick" c'est pour nauséeux, mal à l'aise. "Sic", c'est pour confirmer l'exactitude d'une citation.
    Manquait-il un "k"?
    [/HS]

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 871
    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 871
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Je prends le pouce levé quand même
    Oui, vite avant que je ne le retire...

    Citation Envoyé par Flodelarab Voir le message
    [HS=orthographe]"Sick" c'est pour nauséeux, mal à l'aise. "Sic", c'est pour confirmer l'exactitude d'une citation.
    Manquait-il un "k"?[/HS]
    Il me semble me souvenir d'une BD de Lucky Lucke dans laquelle on voyait dans une bulle un "sic" indiquant un état de tristesse. Ceci dit, Lucky Lucke n'est pas une référence en matière d'orthographe mais si j'avais dû l'écrire, influencé par ce souvenir lointain moi-aussi j'aurais écrit "sic". Tout en connaissant quand-même son homonyme (enfin ce qui était pour moi jusque là un homonyme) latin.

    PS: Ce serait pas mal une rubrique "orthographe" dans ce forum...
    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]

  9. #9
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 404
    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 404
    Par défaut
    Comme ça, il aura 2 solutions, une avec une boucle for et une avec une boucle while.

    Et, promis, je vais essayer de fer des efors pour l'ortografe quart je sais que j'en fée pas mal oh scie.

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 871
    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 871
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Comme ça, il aura 2 solutions, une avec une boucle for et une avec une boucle while.
    Non, j'avais pas vu que t'avais déjà proposé ta solution while. Et en plus bien meilleure. Quand j'ai relu le topic j'ai alors effacé la mienne qui devenait de facto inutile

    Citation Envoyé par disedorgue Voir le message
    Et, promis, je vais essayer de fer des efors pour l'ortografe quart je sais que j'en fée pas mal oh scie.
    Oh cette horreur. T'imagines pas à quel point je laggue quand je lis cette phrase, revenant sans cesse en arrière parce que le sens des mots va à l'encontre du sens général de la phrase. C'est horrible !!!
    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]

  11. #11
    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
    Citation Envoyé par Sve@r Voir le message
    Il me semble me souvenir d'une BD de Lucky Lucke dans laquelle on voyait dans une bulle un "sic" indiquant un état de tristesse.
    Non, non, je voulais le "vrai" sic pour dire que j'ai réellement pondu cette phrase moyennement correcte!

    Ceci dit, Lucky Lucke n'est pas une référence en matière d'orthographe
    C'est bizarre! ça ne m'a pas choqué! Faut que je relise pour voir...

    Tout en connaissant quand-même son homonyme (enfin ce qui était pour moi jusque là un homonyme) latin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e 's/quand-\(.*\) là/quand \1-là/' # please...
    PS: Ce serait pas mal une rubrique "orthographe" dans ce forum...
    Je plussoie!

Discussions similaires

  1. Réponses: 12
    Dernier message: 10/04/2012, 11h28
  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, 17h17
  3. Afficher, rechercher et remplacer dans un fichier
    Par lynal dans le forum Langage
    Réponses: 1
    Dernier message: 13/06/2006, 22h24
  4. Afficher tous les "cout" dans un fichier
    Par tibouchou dans le forum SL & STL
    Réponses: 6
    Dernier message: 18/03/2006, 13h08
  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, 18h21

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