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 :

Traitement sur fichier


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2010
    Messages
    50
    Points
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Points : 34
    Par défaut Traitement sur fichier
    Bonjour , voila ce que j 'essaye de faire , j'ai un fichier sous cette forme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    010020000000                          L ABERGEMENT DE VAREY           T                   01640    1009
    010040000000                          AMBERIEU EN BUGEY                  T                   01500
    010040000100 BOISSIEU          ALL  ALLEE                           0000 0000 0000 0000 015002005A    002206
    010040000200 ETRAC               ALL  ALLEE                           0000 0000 0000 0000 015001018A    002206
    010040000300 BARBOTIERE      ALL  ALLEE                           0000 0000 0000 0000 015001018B    002206
    010040000500 PANISSETTE       ALL  ALLEE                           0000 0000 0000 0000 015001018A    002206
    Je veux vérifier pour chaque ligne de mon fichier si je trouve la valeur 'T' en colonne 71 et si en colonne 100 nous avons une valeur renseignée.
    Par ex : si je prends la première ligne de mon fichier ci-dessus : j'ai bien la valeur T et en colonne 100 : la valeur 1009 donc c parfait
    Si cette condition est vraie , je veux vérifier pour la ligne suivante l'absence de la valeur 'T' en colonne 71 . Or dans mon exemple j'ai en ligne 2, la colonne 71 qui est renseignée avec la valeur 'T' . J'aimerais récupérer dans mon fichier toutes les lignes qui ne remplisse pas ces conditions .
    Le résultat de mon traitement serait donc que je pourrais stocker dans un fichier :

    Résulat attendu :

    010020000000 L ABERGEMENT DE VAREY T 01640 1009


    Merci de votre aide

  2. #2
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 326
    Points
    12 902
    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 326
    Points : 12 902
    Par défaut
    Va falloir apprendre à compter car la premiere ligne ne fait que 48 colonnes...
    Cordialement.

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 620
    Points
    19 578
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 620
    Points : 19 578
    Par défaut
    c'est un fichier à champs de longueurs fixes que ne reflète pas ici l'affichage. j'ai corrigé l'affichage entre balises CODE
    mais j'ai un doute sur le copier/coller, parce que les données devraient être alignées. Or, l'enregistrement concernant Ambérieu-en-Bugeay comporte bien un T mais pas à la 71éme position.

    d'où viennent les données ?


    =>


    NB: on va t'aider à faire l'exercice qui t'a été assigné, mais on ne le fera pas à ta place.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 326
    Points
    12 902
    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 326
    Points : 12 902
    Par défaut
    une solution (peut être) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ cat /tmp/xx.txt 
    010020000000                          L ABERGEMENT DE VAREY           T                   01640    1009
    010020000000                          L yBERGEMENT DE VAREY           T                   01640    1009
    010040000000                          AMBERIEU EN BUGEY               T                   01500
    010040000100 BOISSIEU          ALL  ALLEE                           0000 0000 0000 0000 015002005A    002206
    010040000200 ETRAC               ALL  ALLEE                         0000 0000 0000 0000 015001018A    002206
    010040000300 BARBOTIERE      ALL  ALLEE                           0000 0000 0000 0000 015001018B    002206
    010040000500 PANISSETTE       ALL  ALLEE                           0000 0000 0000 0000 015001018A    002206
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ eval $(base64 -d  <<<"YXdrIC12RlM9ICckNzEgPT0gIlQiICYmIGwgIT0gIiIge3ByaW50IGw7bD0iIn0gOyAkNzEgPT0gIlQiICYmICQxMDAgIT0gIiIge2w9JDB9Jwo=") /tmp/xx.txt
    010020000000                          L ABERGEMENT DE VAREY           T                   01640    1009
    010020000000                          L yBERGEMENT DE VAREY           T                   01640    1009
    Cordialement.

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 620
    Points
    19 578
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 620
    Points : 19 578
    Par défaut
    tu as corrigé le fichier en plus de lui "copier" sa première ligne ?

    pourquoi n'y a-t-il pas de sortie avec le fichier hycar33 ? il y a quand même au moins une ligne avec un T à la 71ème position !

    d'ailleurs, avec ton fichier, si j'enlève la copie de la première ligne, alors ta commande n'affiche plus rien aussi.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 326
    Points
    12 902
    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 326
    Points : 12 902
    Par défaut
    Pour moi, cela fonctionne très bien:
    Dans le fichier de hycar33, la ligne avec le T en position 71 n'a pas de valeur en position 100 et la ligne suivante n'a pas de T en position 71.

    Après, j'ai peut-être mal compris le sujet.

    Et si je retire la ligne en doublon dans mon fichier, j'ai bien une seule ligne qui s'affiche...
    Cordialement.

  7. #7
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 282
    Points
    13 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 282
    Points : 13 572
    Par défaut
    Bonjour

    Moi, de toute façon, je n'ai pas compris le sujet. Il y a cette histoire de colonnes, mais il y a aussi le fait qu'il veut dans son fichier les lignes qui ne correspondent pas au motif. Or le résultat attendu est la seule ligne qui corresponde au motif. pffff. Je retourne me coucher.

    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

Discussions similaires

  1. Cherche une commande shell/bash pour traitement sur fichier
    Par breizho35 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 26/02/2015, 12h18
  2. Parcourir une arborescence puis traitement sur fichier
    Par linuxdeb dans le forum Shell et commandes GNU
    Réponses: 20
    Dernier message: 13/12/2013, 17h02
  3. Traitement sur fichiers plats
    Par hervel dans le forum Shell et commandes POSIX
    Réponses: 2
    Dernier message: 12/09/2013, 02h33
  4. Batch : Traitement sur fichier txt
    Par vita83 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 13/09/2008, 09h08

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