in reply to Find common lines in multiple files?

It could be as simple as the following one-liner;

perl -nle"push @{$h{$_}},$ARGV}{print qq[$_ found in @{$h{$_}}] for keys %h +" 1.dat 2.dat 3.dat 4.dat 5.dat 6.dat 7.dat 8.dat 9.dat 10.dat

Which produces a list like this:

name074 found in 1.dat 6.dat name027 found in 5.dat name002 found in 1.dat 2.dat 3.dat name117 found in 2.dat 3.dat 4.dat name110 found in 6.dat name160 found in 5.dat 9.dat name079 found in 5.dat 7.dat name051 found in 1.dat name022 found in 2.dat 3.dat name100 found in 2.dat 7.dat name061 found in 6.dat ...

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

Replies are listed 'Best First'.
Re^2: Find common lines in multiple files?
by Anonymous Monk on Dec 15, 2010 at 20:29 UTC
    How do I run your code? Is it possible to put this in a .pl file form?
      How do I run your code?

      If you're on windows:

      c:\>perl -nle"push @{$h{$_}},$ARGV}{print qq[$_ found in @{$h{$_}}] fo +r keys %h" 0.dat 1.dat 2.dat 3.dat 4.dat 5.dat 6.dat 7.dat 8.dat 9.da +t

      On *nix this might work:

      $perl -nle'push @{$h{$_}},$ARGV}{print "$_ found in @{$h{$_}}" for key +s %h' ?.dat
      Is it possible to put this in a .pl file form?

      Yes:

      #! perl -nl push @{ $h{ $_ } }, $ARGV }{ print qq[$_ id in @{$h{ $_ }}] for keys %h;

      Assuming your files are name 0.dat, 1.dat etc.

      On windows:

      c:\>theScript.pl 0.dat 1.dat 2.dat 3.dat 4.dat 5.dat 6.dat 7.dat 8.dat + 9.dat

      On *nix, something like:

      $perl theScript.pl ?.dat

      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.