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 :

generer un chemin via 2 colonnes


Sujet :

Linux

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6
    Par défaut generer un chemin via 2 colonnes
    bonjour
    j ai une fichier avec 2 colonnes (col1=parent,col2=enfant) avec les valeurs par exemple
    a b
    b c
    b d
    d e
    a f



    j aimerai trouver la maniere la plus elegante pour via shell construire qqchose comme
    a b c
    a b d e
    a f

    cad une reconstruction de chemin a partir d un fichier a 2 colonnes !
    Merci!

  2. #2
    ALT
    ALT est déconnecté
    Membre Expert
    Avatar de ALT
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 383
    Par défaut
    Hum !
    Ne serait-ce pas un exo d'info. que tu nous demandes de résoudre à ta place ?
    Ou bien me trompé-je ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6
    Par défaut
    no no pas du tout
    j ai besoin de le faire car j ai spliite des chemins a b c d dans un fichier avec 2 colonnes et j ai besoin de faire l inverse

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    On ne peut pas répondre sans plus d'info, simplement parce que tel que présenté le problème est indéterminé. Suppose qu'on ait les chemins suivants :

    a b c d
    a e c f

    C'est à dire deux répertoires portant le même nom, contenant eux-même des sous répertoires. Comment savoir quand on voit "c d" dans ton fichier à deux colones, si on parle du c qui est sous b, ou du c qui est sous e ?

    Il fautdrait qu'on sache exactement comment tu as généré ton fichier à deux colones, pour pouvoir (si c'est possible) faire l'opération inverse.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6
    Par défaut
    en fait je suis parti du chemin
    a b c
    a b d e
    a f

    pour splitter en deux colonnes, soit
    - a b c
    donnera
    a b
    b c

    - a b d e
    donnera
    a b
    b d
    d e

    colonne 2 = enfant de colonne 1
    donc le repertoire b a pour parent a et possede 2 enfants c & d

    je pars du principe que un repertoire a un seul parent possible, mais plusieurs enfants. donc b aura tjrs a cmme parent (pas d ambiguite)

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Ca j'avais bien compris, mais il y a des choses que tu ne nous dis pas. Tu nous dis que

    - a b c
    donne
    a b
    b c

    - a b d e
    donne
    a b
    b d
    d e

    mais comment arrives-tu à

    a b
    b c
    b d
    d e

    ? Tu vois bien qu'il y a des trucs qui ont sautés entre les deux.

    Pour reprendre mon exemple, comment va tu coder :

    a b c d
    a e c f

    ?

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6
    Par défaut
    2 chemins "a b c" et "a b d e" donneront en tout :
    a b
    b c
    b d
    d e



    Ton exemple
    a b c d
    a e c f

    n est pas pertinent car "c" a 2 parents "b" et "e", or je pars du principe qu il y a 1 parent par repertoire

  8. #8
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Oui enfin c n'a pas deux parent, ce sont simplement deux répertoires différents qui ont the même nom.

    Mais bon puisque tu dis que ce cas ne se présente pas pour toi, je propose un petit morceau de 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
    #!/bin/awk -f
     
    {
    	leaves[$2]
    	parent[$2] = $1
    	delete leaves[$1]
    }
     
    END {
    	for (i in leaves) {
    		path = i
    		while (i = parent[i]) {
    			path = i " " path
    		}
    		print path
    	}
    }
    Attention, ce code suppose qu'un noeud n'apparait jamais en deuxième colone après être apparu en première colone.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6
    Par défaut
    Merci Matafan
    Ca me semble tout bon (je testerai demain), et meme tres tres ingenieux !
    Thnx again Awk Guru !

    Update: Ok ca marche de tonnerre ! Thnx again Matafan !

Discussions similaires

  1. generer un chemin via 2 colonnes
    Par twinsen2002 dans le forum SGBD
    Réponses: 1
    Dernier message: 17/12/2008, 21h39
  2. Réponses: 1
    Dernier message: 19/06/2007, 12h21
  3. Generer un report via spring
    Par partyboy dans le forum Jasper
    Réponses: 1
    Dernier message: 09/02/2007, 13h40
  4. Generer un XML via un schema XSD
    Par manu00 dans le forum Valider
    Réponses: 1
    Dernier message: 26/07/2005, 13h34
  5. Generer du xml via SQL(oracle) avec de l'asp
    Par jpg dans le forum XQUERY/SGBD
    Réponses: 6
    Dernier message: 03/08/2004, 12h36

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