Re: Re : RE [BASH] problème avec un script

2008-04-10 Par sujet François TOURDE
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

2008-04-08 Par sujet Ludovic Cesar
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

2008-04-08 Par sujet GiGGz

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

2008-04-08 Par sujet Tahar
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

2008-04-08 Par sujet François TOURDE
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]

2008-04-08 Par sujet Tahar
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

2008-04-08 Par sujet Eddy Touati

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]