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 :

Comparer deux lignes de deux fichiers differents avec awk


Sujet :

Linux

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Comparer deux lignes de deux fichiers differents avec awk
    Bonjour

    D abord tous mes voeux pour cette annee 2005. Voila dans cadre d'un petit projet
    je cherche faire un petit script awk de preference (car cest le language de script que je connais a peu pres) qui permettait de comparer deux lignes situes dans deux fichiers differents (de meme taille) pour en retirer les valeurs differentes et ne garder que les valeurs communes . Je m explique par exemples

    Fichier 1

    ligne 1: 234 562 236 545 789

    Fichier 2

    ligne 1: 234 566 237 555 789

    le script doit pouvoir m affichicher en sortie les valeurs communes de la ligne 1 (soit ici 234 et 789), m enlever le reste et faire de meme pour les lignes 2 ... de mes fichiers.

    Merci pour votre aide

    cytp450.

  2. #2
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Salut,

    La commande diff ne te convient pas ?
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonsoir

    D abord merci pou ta suggestion

    La commande diff ne te convient pas
    En effet en regardant le man de diff, cela pourrait m aider. Cependant je viens de tester

    la commande

    cytp450> diif -aw Fichier 1 Fichier 2 > out
    mon fichier out me sort les fichiers concatenait avec une marque a gauche < et > et je comprend pas trop .

    De plus il y a une erreur dans mon message je souhaiterais garder dans le fichier de sortie les valeurs qui ne sont pas presentes dans le fichier 1 par exemples est ce que ca change qqchose a la commande ?

    enfin toutes mes excuse pour la mauvaise presntation du titre

    cytp450
    [/quote]

  4. #4
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Eh bien, tu peux faire ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    diff fic1 fic2 | grep ">" | sed s/\>// > resultat_diff
    Après, tu mets les options que tu veux en plus a diff.
    En fait, '>' indique les lignes qui ne sont pas presentes dans fic1 mais presentes dans fic2, et '<' l inverse.

    ++
    Pouic
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  5. #5
    Candidat au Club
    Inscrit en
    Janvier 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    pour revenir a awk
    ça fait une éternité que l'ai pas utilisé, j'essayerai quand même de vous donner des idées, j'ai un peu oublié la syntaxe exact
    1. commencez par un "paste" pour fusionner les deux fichiers ligne par ligne:
    paste -d '\n' f1 f2 | awk -f script.awk
    2. dans le script
    { x = $0 <--- on sauvegarde la ligne ds la variable x
    readline <--- on passe à la ligne suivante
    for (i = 1; i <= NF; ++i) { <--- on parcourt les champs
    on cherche $i dans x pour cela
    je ne sais pas si vous pouvez utiliser l'opérateur "in" (ou qlq chose
    d'équivalent ) ou une fonction de recherche d'expressions
    }
    }

    voila j'espère que j'ai répondu à la question
    bonne chance

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonsoir

    Bon apres les conseil de zed2x et Pouic j ai applique deux methodes

    la commande paste -d '\n' f1 f2 (que me suggerer zed2x et un script en perl que j avais deja creer pour eliminer les doublons dans un tableau de caractere (ici les divers champs dans ma lignes).

    Cela marche au poil

    donc resolu

    merci a vous

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

Discussions similaires

  1. Comparer deux lignes dans un fichier
    Par manouch95 dans le forum Général Java
    Réponses: 7
    Dernier message: 31/12/2014, 12h17
  2. Réponses: 0
    Dernier message: 15/11/2012, 19h47
  3. Réponses: 0
    Dernier message: 23/02/2012, 15h21
  4. Réponses: 9
    Dernier message: 25/06/2011, 00h40
  5. Insérer une ligne entre deux autres dans un fichier
    Par c1malabar dans le forum Langage
    Réponses: 8
    Dernier message: 25/05/2011, 19h44

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