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 :

Manipulation de 2 fichiers pour en faire un seul


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2011
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 179
    Points : 107
    Points
    107
    Par défaut Manipulation de 2 fichiers pour en faire un seul
    Hello !

    n'étant pas super bon dans le scripting je viens vous demander de l'aide !

    j'ai actuellement 2 fichiers que je récupère, et je voudrais mixer les deux pour en faire un troisième avec des champs particuliers.

    mon premier fichier ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Port      Name               Status       Vlan       Duplex  Speed Type
    Gi1/0/1   PORT RESERVE       disabled     99           auto   auto 10/100/1000BaseTX
    Gi1/0/2   PC DOT1X           notconnect   9            auto   auto 10/100/1000BaseTX
    Gi1/0/3   PC DOT1X           notconnect   9            auto   auto 10/100/1000BaseTX
    Gi1/0/4   *** Barometre mura connected    9          a-half   a-10 10/100/1000BaseTX
    Gi1/0/5   *** PABX Doublon s connected    14         a-full  a-100 10/100/1000BaseTX
    Gi1/0/6   *** boitier contro connected    13         a-full  a-100 10/100/1000BaseTX

    mon deuxième à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Interface                      Status         Protocol Description
    Vl1                            admin down     down
    Vl210                          up             up
    Fa0                            down           down
    Gi1/0/1                        admin down     down     PORT RESERVE
    Gi1/0/2                        down           down     PC DOT1X
    Gi1/0/3                        down           down     PC DOT1X
    Gi1/0/4                        up             up       *** Barometre mural 1 ***
    Gi1/0/5                        up             up       *** PABX Doublon solution switch ***
    Gi1/0/6                        up             up       *** boitier controle acces ***

    et je voudrais que le fichier final ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Port 		Description                              Status     Vlan
    Gi1/0/1		PORT RESERVE                            disabled     99
    Gi1/0/2		PC DOT1X                                notconnect   9
    Gi1/0/3		PC DOT1X                                notconnect   9
    Gi1/0/4		*** Barometre mural 1 ***               connected    9
    Gi1/0/5		*** PABX Doublon solution switch ***    connected    14
    Gi1/0/6		*** boitier controle acces ***          connected    13

    Je pense que ça doit être possible à faire mais vu mes compétences ^^ (car à coup de grep ou d'awk je vais pas forcément aller bien loin)

    merci à vous par avance pour l'aide que vous pourrez m'apporter !

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 099
    Points : 28 390
    Points
    28 390
    Par défaut
    Regarde du côté de la commande join

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2011
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 179
    Points : 107
    Points
    107
    Par défaut
    "join" en shell ?

    wtf je la connais pas celle là

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 582
    Points : 19 455
    Points
    19 455
    Par défaut boule de cristal HS, désolé :(
    Bonjour,

    oui, join probablement.

    Citation Envoyé par tetzispa
    je voudrais [...] en faire un troisième avec des champs particuliers
    mais quels sont les critères ?

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2011
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 179
    Points : 107
    Points
    107
    Par défaut
    je tente du join là, mais je pense avoir des problèmes de colonne

    les critères je les ai mis dans le fichier de sortie que je veux

    je veux récupérer :

    - la colonne Port
    - la colonne "Status" du 1er fichier
    - la colonne "Vlan" du 1er fichier
    - la colonne "Description" du 2ème fichier

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 582
    Points : 19 455
    Points
    19 455
    Par défaut
    je pense avoir des problèmes de colonne
    pourquoi ? tu peux détailler, s'il te plaît ?

    - la colonne Port
    - la colonne "Status" du 1er fichier
    - la colonne "Vlan" du 1er fichier
    - la colonne "Description" du 2ème fichier
    cela suggère que la colonne commune sur laquelle se baser pour effectuer la jointure est la colonne Port
    ...
    ?

  7. #7
    Membre régulier
    Inscrit en
    Janvier 2011
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 179
    Points : 107
    Points
    107
    Par défaut
    oui tout à fait, c'est le seul élément de commun entre les deux fichiers

  8. #8
    Membre régulier
    Inscrit en
    Janvier 2011
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 179
    Points : 107
    Points
    107
    Par défaut
    bon j'en suis là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    root [~] > join -1 1 -2 1 test test2
    Port Name Status Vlan Duplex Speed Type Status Protocol Description
    Gi1/0/1 PORT RESERVE disabled 99 auto auto 10/100/1000BaseTX admin down down PORT RESERVE
    Gi1/0/2 PC DOT1X notconnect 9 auto auto 10/100/1000BaseTX down down PC DOT1X
    Gi1/0/3 PC DOT1X notconnect 9 auto auto 10/100/1000BaseTX down down PC DOT1X
    Gi1/0/4 *** Barometre mura connected 9 a-half a-10 10/100/1000BaseTX up up *** Barometre mural 1 ***
    Gi1/0/5 *** PABX Doublon s connected 14 a-full a-100 10/100/1000BaseTX up up *** PABX Doublon solution switch ***
    Gi1/0/6 *** boitier contro connected 13 a-full a-100 10/100/1000BaseTX up up *** boitier controle acces ***
    un peu le bordel les différentes options, là j'ai presque tout récupérer comme je voulais, va falloir que j'arrive à sélectionner les champs que je veux (avec le -t apparemment, mais je capte pas tout encore :p)

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 582
    Points : 19 455
    Points
    19 455
    Par défaut
    d'où sortent les fichiers originaux ?
    tu peux décider de leur format pour que les colonnes soient définies par un séparateur cohérent ?

  10. #10
    Membre régulier
    Inscrit en
    Janvier 2011
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 179
    Points : 107
    Points
    107
    Par défaut
    les fichiers originaux je les génère depuis un "show int status" et un "show int desc" sur un switch cisco, donc le coup des colonnes je sais que c'est le bordel, j'ai rajouté des caractères genre "-" entre des mots pour avoir un bon fichier, donc maintenant j'arrive à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Port Name Status Vlan Duplex Speed Type Status Protocol Description
    Gi1/0/1 PORT-RESERVE disabled 99 auto auto 10/100/1000BaseTX admin down down PORT-RESERVE
    Gi1/0/2 PC-DOT1X notconnect 9 auto auto 10/100/1000BaseTX down down PC-DOT1X
    Gi1/0/3 PC-DOT1X notconnect 9 auto auto 10/100/1000BaseTX down down PC-DOT1X
    Gi1/0/4 Barometre-mura connected 9 a-half a-10 10/100/1000BaseTX up up Barometr-mura-1
    Gi1/0/5 PABX-Doublon-s connected 14 a-full a-100 10/100/1000BaseTX up up PABX-Doublon-solution-switch
    Gi1/0/6 boitier-contro connected 13 a-full a-100 10/100/1000BaseTX up up boitier-controle-acces
    ce qui fait que c'est presque bon sauf pour la ligne 1 à cause d'un nom, mais rien de grave, je l'ai supprimé afin de continuer mes tests

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 260
    Points : 13 513
    Points
    13 513
    Par défaut
    Bonjour :-)

    Sans vouloir être méchant, le fichier 1 et le fichier 3 sont identiques sans les deux dernières colonnes et en appelant "name" "description"

    Citation Envoyé par tetzispa Voir le message
    je tente du join là, mais je pense avoir des problèmes de colonne

    les critères je les ai mis dans le fichier de sortie que je veux

    je veux récupérer :

    - la colonne Port
    - la colonne "Status" du 1er fichier
    - la colonne "Vlan" du 1er fichier
    - la colonne "Description" du 2ème fichier
    Cette description est fausse. Seul le fichier 1 est utile.

    N'est-ce pas?

    Un grep -o pourrait presque suffire.

  12. #12
    Membre régulier
    Inscrit en
    Janvier 2011
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 179
    Points : 107
    Points
    107
    Par défaut
    c'est pas méchant mais pas de ma faute car sur le 1er fichier le champ "description" est tronqué par cisco, et dans le 2eme j'ai toute ma description d'où ma demande ^^

    je testerai demain ton truc, merci !

  13. #13
    Membre régulier
    Inscrit en
    Janvier 2011
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 179
    Points : 107
    Points
    107
    Par défaut
    merci pour le coup du join ! je ne connaissais pas et je me suis simplifié la vie !

    après je fais un awk sur mon fichier final pour avoir les informations que je souhaite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    root [~] > awk 'BEGIN{FS=OFS=";"}{print $1,$2,$3,$4,$10}' test3
    Port;Name;Status;Vlan;Description
    Gi1/0/1;PORT-RESERVE;disabled;99;PORT-RESERVE
    Gi1/0/2;PC-DOT1X;notconnect;9;PC-DOT1X
    Gi1/0/3;PC-DOT1X;notconnect;9;PC-DOT1X
    Gi1/0/4;Barometre-mura;connected;9;Barometr-mura-1
    Gi1/0/5;PABX-Doublon-s;connected;14;PABX-Doublon-solution-switch
    Gi1/0/6;boitier-contro;connected;13;boitier-controle-acces

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 582
    Points : 19 455
    Points
    19 455
    Par défaut
    l'option -o de join devrait te permettre d'éviter awk.
    cf. info coreutils 'join invocation'

  15. #15
    Membre régulier
    Inscrit en
    Janvier 2011
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 179
    Points : 107
    Points
    107
    Par défaut
    oui aussi, niquel cette commande !

    merci encore à vous tous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Partir d'un gros fichier pour en faire plusieurs petits
    Par Bruno13 dans le forum Débuter
    Réponses: 12
    Dernier message: 07/10/2009, 13h12
  2. Réponses: 1
    Dernier message: 01/03/2009, 16h53
  3. Réponses: 8
    Dernier message: 15/07/2008, 17h41
  4. Réponses: 4
    Dernier message: 27/09/2007, 15h05
  5. Réponses: 3
    Dernier message: 03/05/2007, 15h30

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