skript för att jämföra skillnader mellan två txt filer?

Permalänk

skript för att jämföra skillnader mellan två txt filer?

Jag vill kunna jämföra två filer och sedan få ut det som skiljer dessa emellan.

Det är inte en vanlig diff rad mot rad, utan det kan vara olika antal rader i txt filerna men samtidigt finnas många rader som är lika. Det jag är ute efter är alltså det som skiljer och är unikt i varje textfil.

Exempel

Fil A Fil B
1 1
2 2
A 3
3 4
B C
4 5

Det som är unikt från båda är raderna:
A
B
C
5

Skulle vilja ha ett skript (helst perl) som gör en sådan här jämförelse och matar ut resultatet. Har försökt att leta efter det men inte hittat något. Tacksam för förslag!

Permalänk

Om du har lite koll på programmering är det inte så svårt.

Du får läsa in båda filerna och stoppa in dom i olika arrays.
Sen är det bara loopa igenom dom och jämföra.
Sen avsluta med att skriva ut resultatet.

Har inte testat perl.

Permalänk
Hedersmedlem

Jag tar dock inget ansvar för mina rostiga perlkunskaper.

my %hash = (); open(f, "a.txt"); while(<f>) { my($line) = $_; chomp($line); $hash{$line} = 1; } open(f, "b.txt"); while(<f>) { my($line) = $_; chomp($line); if ($hash{$line} == 1) { $hash{$line} = 0; } elsif( !exists $hash{$line}) { print "$line\n"; $hash{$line} = 0; } } while ( my ($key, $value) = each(%hash) ) { if($value == 1) { print "$key\n"; } }

Permalänk
Medlem

Gnu utils sort och join klarar biffen.

Permalänk

Tack för hjälpen Elgot!

Fick ut resultat med ditt script, bytte ut några saker bara, läste in filerna till två variabler och änvände dessa sedan i skriptet. Fick nämligen felmeddelande först.
$fileA = 'logg.txt'; # Name the file
$fileB = 'new_only_docs.txt'; # Name the filenew_only_docs.txt