Re: Re : RE [BASH] problème avec un script
Le 13978ième jour après Epoch, Jacques L'helgoualc'h écrivait: Yves Rutschle a écrit, mercredi 9 avril 2008, à 10:23 : On Tue, Apr 08, 2008 at 07:58:20PM +0200, Jacques L'helgoualc'h wrote: { sort -u fic1; sort -u fic2; }|sort|uniq -d Wow. J'ai une solution en 2 lignes de perl: my %f1 = map { $_ = 1 } `cat $ARGV[0]`; print grep { $f1{$_} } `cat $ARGV[1]`; mais tu gagnes de loin. Élegant et court :) Merci, mais j'ai juste élagué la solution de François Tourde ; le triple awk, analogue à ta solution, évite les tris inutiles. Mais ta solution a l'avantage de montrer qu'en lisant un peu plus attentivement la doc des filtres, on a souvent toutes les réponses aux questions qu'on se pose ;) Élagons, élagons, il en restera toujours quelque chose ^^
RE [BASH] problème avec un script
Salut, Ne pourrais-tu pas t'en sortir avec la commande diff ? Ludo Tahar [EMAIL PROTECTED] 08/04/2008 15:45 A DEBIAN debian-user-french@lists.debian.org cc Objet [BASH] problème avec un script Bonjour à tous, Je dispose de deux documents que je voudrais comparer, c'est à dire je voudrais savoir quelle ligne du premier se trouve dans le second le résultat est redirigé vers un fichier. j'ai utilisé grep dans une boucle while pour cela, mais j'ai souvent le message file not found ou bien rien du tout alors que je suis certain qu'il y a une entrée qui existe dans les deux fichiers (une entrée que j'ai rajouté manuellement dans les deux pour mes tests) Voici le script que j'avais écris #!/bin/bash while read line do grep $line fichier1 comp_result done fichier2 Je ne sais pas ce qui coche, ça ne marche pas, quand je mets grep -w $line j'ai toujours aucun résultat comme si aucune entrée du premier fichier n'existe dans le second. Merci pour votre aide
Re: [BASH] problème avec un script
Tahar a écrit : Bonjour à tous, Je dispose de deux documents que je voudrais comparer, c'est à dire je voudrais savoir quelle ligne du premier se trouve dans le second le résultat est redirigé vers un fichier. j'ai utilisé grep dans une boucle while pour cela, mais j'ai souvent le message file not found ou bien rien du tout alors que je suis certain qu'il y a une entrée qui existe dans les deux fichiers (une entrée que j'ai rajouté manuellement dans les deux pour mes tests) Voici le script que j'avais écris #!/bin/bash while read line do grep $line fichier1 comp_result done fichier2 Je ne sais pas ce qui coche, ça ne marche pas, quand je mets grep -w $line j'ai toujours aucun résultat comme si aucune entrée du premier fichier n'existe dans le second. utilise tkdiff sous x. Merci pour votre aide -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re : RE [BASH] problème avec un script
J'ai pensé à diff, mais ça ne me donne pas le résultat que je voudrais avoir en sortie, car je veux uniquement la liste des éléments présents dans les deux fichiers uniquement - Message d'origine De : Ludovic Cesar [EMAIL PROTECTED] À : Tahar [EMAIL PROTECTED] Cc : DEBIAN debian-user-french@lists.debian.org Envoyé le : Mardi, 8 Avril 2008, 16h12mn 21s Objet : RE [BASH] problème avec un script Salut, Ne pourrais-tu pas t'en sortir avec la commandediff ? Ludo Tahar [EMAIL PROTECTED]08/04/2008 15:45 A DEBIAN debian-user-french@lists.debian.orgcc Objet [BASH] problème avec un script Bonjour à tous, Je dispose de deux documents que je voudrais comparer, c'est à dire jevoudrais savoir quelle ligne du premier se trouve dans le second le résultatest redirigé vers un fichier. j'ai utilisé grep dans une boucle while pourcela, mais j'ai souvent le message file not found ou bien rien du toutalors que je suis certain qu'il y a une entrée qui existe dans les deuxfichiers (une entrée que j'ai rajouté manuellement dans les deux pour mestests) Voici le script que j'avais écris #!/bin/bash while read line do grep $line fichier1 comp_result done fichier2 Je ne sais pas ce qui coche, ça ne marche pas, quand je mets grep -w $linej'ai toujours aucun résultat comme si aucune entrée du premier fichiern'existe dans le second. Merci pour votre aide
Re: Re : RE [BASH] problème avec un script
Le 13977ième jour après Epoch, Tahar écrivait: J'ai pensé à diff, mais ça ne me donne pas le résultat que je voudrais avoir en sortie, car je veux uniquement la liste des éléments présents dans les deux fichiers uniquement Dans ce cas, un truc du genre: cat (sort f1|uniq) (sort f2|uniq)|sort|uniq -c|grep -v ^ *1 *|sed -e 's/ *[0-9]\+ *//' -- Je sors dehors Le vent du printemps s'est pris Dans les saules -+- Chodô -+-
Re : Re : RE [BASH] problème avec un script[R ESOLU]
Bonjour à tous, Merci beaucoup pour votre aide, mais j'ai résolu le problème en intervertissant fiche1 et fiche2, je ne comprends pas comment ça se fait, mais ça a l'air de marcher :) encore merci pour votre aide - Message d'origine De : François TOURDE [EMAIL PROTECTED] À : debian-user-french@lists.debian.org Envoyé le : Mardi, 8 Avril 2008, 17h13mn 01s Objet : Re: Re : RE [BASH] problème avec un script Le 13977ième jour après Epoch, Tahar écrivait: J'ai pensé à diff, mais ça ne me donne pas le résultat que je voudrais avoir en sortie, car je veux uniquement la liste des éléments présents dans les deux fichiers uniquement Dans ce cas, un truc du genre: cat (sort f1|uniq) (sort f2|uniq)|sort|uniq -c|grep -v ^ *1 *|sed -e 's/ *[0-9]\+ *//' -- Je sors dehors Le vent du printemps s'est pris Dans les saules -+- Chodô -+-
Re: Re : RE [BASH] problème avec un script
Sinon il y a toujours la solution perl #!/usr/bin/perl -w use strict; my ($file1,$file2) = @ARGV; my $ligne; open(FILE1,$file1); foreach(FILE1){ $ligne = $_; open(FILE2,$file2); foreach(FILE2){ if($ligne eq $_){ print; } } close (FILE2); } close(FILE1); François TOURDE a écrit : Le 13977ième jour après Epoch, Tahar écrivait: J'ai pensé à diff, mais ça ne me donne pas le résultat que je voudrais avoir en sortie, car je veux uniquement la liste des éléments présents dans les deux fichiers uniquement Dans ce cas, un truc du genre: cat (sort f1|uniq) (sort f2|uniq)|sort|uniq -c|grep -v ^ *1 *|sed -e 's/ *[0-9]\+ *//' -- Le progrès technique est comme une hache qu'on aurait mis dans les mains d'un psychopathe (Albert Einstein) -- Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. (Albert Einstein) -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]