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 :

Tri d'un fichier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 8
    Par défaut Tri d'un fichier
    Bonjour,

    J ai un fichier comme le suivant :
    1 1
    1 1
    1 2
    1 2
    1 2
    2 4
    2 4
    3 7
    3 9
    3 9. Et j aimerais en sortie avoir les lignes dont la seconde colonne est le plus grand pour chaque élément de la première colonne .
    À savoir en sortie :
    1 2
    1 2
    1 2
    2 4
    2 4
    3 9
    3 9

    Comment feriez vous?
    Du awk ?
    Merci de votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    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 102
    Par défaut
    Citation Envoyé par pepitolover Voir le message
    Comment feriez vous?
    Du awk ?
    En ce qui me concerne, oui! J'utiliserais awk!

    Merci d'utiliser la balise CODE (le # à droite dans la barre d'outils):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    1 1
    1 1
    1 2
    1 2
    1 2
    2 4
    2 4
    3 7
    3 9
    3 9
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    1 2
    1 2
    1 2
    2 4
    2 4
    3 9
    3 9

  3. #3
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 8
    Par défaut
    Ok, désole de mon téléphone je n ai pas bien vu les options.
    Comment écrirais tu le script , je bloque sur ce script?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    awk '($1 < $2)' fichier-source.txt > fichier_result.txt

  5. #5
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 8
    Par défaut
    Ce n'est pas tout à fait ce que je souhaite.
    Je souhaite en fait pour chaque élément de la première colonne ne garder que les lignes qui ont le plus grand chiffre sur la seconde colonne.

    Ainsi sur la liste suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    À 2
    À 2
    À 3
    À 3
    B 1
    B 9
    J'aurais en sortie :

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 659
    Par défaut
    Bonjour,

    il est étonnant que tu ne souhaites pas effectuer un regroupement des valeurs (à la uniq)
    ...
    ?

    il y a d'autres données dans le fichier à traiter qui justifierait cette non-demande?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    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 102
    Par défaut
    Citation Envoyé par pepitolover Voir le message
    Comment écrirais tu le script , je bloque sur ce script?
    C'est un problème assez simple... pour peu qu'on le prenne par le bon bout!

    Je ne vais pas écrire le code, mais voici l'algo que j'utiliserais en awk

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    BEGIN: intialiser last_d et last_v et num_line à 0
     
    EACH:
    si cur_d == last_d
    alors
      si cur_v == last_v
      alors incrémenter num_line ; stocker la ligne sous num_line
      sinon si cur_v < last_v
      alors erreur pas bien trié
      sinon # on a trouvé une meilleure version: on oublie tout ce qu'on a stocké pour last_v
        initialiser num_line à 1 ; stocker la ligne sous num_line
      finsi
    sinon # On passe à un nouveau deal: on sort tout ce qu'on a stocké
      for n_line de 1 à num_line do
        imprimer la ligne stockée sous n_line (pour last_v)
      done
      last_v := cur_v ; initialiser num_line à 1 ; stocker la ligne sous num_line
    finsi
     
    END: # On sort tout ce qu'on a stocké pour le dernier deal
      for n_line de 1 à num_line do
        imprimer la ligne stockée sous n_line (pour last_v)
      done
    Y a plus qu'à le coder en awk

Discussions similaires

  1. Optimiser le tri d'un fichier
    Par mejri dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 13/11/2006, 09h56
  2. [VBA Excel Débutant] Tri d'un fichier Excel depuis Access
    Par elgringo2007 dans le forum Access
    Réponses: 3
    Dernier message: 07/08/2006, 16h21
  3. Tri d'un fichier
    Par Premium dans le forum C
    Réponses: 14
    Dernier message: 15/01/2006, 22h55
  4. tri d'un fichier texte
    Par ben127 dans le forum C
    Réponses: 7
    Dernier message: 23/12/2005, 20h03

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