Hurtigste måde at finde forskellene mellem to filer i unix?

Jeg ønsker at finde forskellen mellem to filer og derefter sætte kun de forskelle, der i en tredje fil. Jeg så forskellige tilgange bruger awk, diff og komm. Er der noget mere ?

f.eks.Sammenligne to filer, linje-for-linje og generere forskel i en anden fil

f.eks.Kopi forskellene mellem to filer i unix

Jeg har brug for at vide, hvilken er den hurtigste måde at finde alle de forskelle og liste dem i en fil for hver af de sager under –

Case 1 - file2 = file1 + extra text appended.
Case 2 - file2 and file1 are different.
da dette afhænger af dit input, det er bedst at tid-det-selv
kan du lave dit tilfælde mere specifikke, og måske give nogle kodeeksempler på ting, du har prøvet?
For Case 2 der er cmp at sammenligne to filer byte per byte.
Du har allerede en række alternativer. Brug time kommando til at finde dit svar.
“Forskelle” er virkelig udefineret, og kan betyde en masse ting. Med hensyn til din “Er der mere?” spørgsmål: selvfølgelig er der nogen der kan skrive et nyt program til at finde forskelle.

OriginalForfatteren Steam | 2013-08-05

4 svar

  1. 43

    Du kunne prøve..

    comm -13 <(sort file1) <(sort file2) > file3

    eller

    grep -Fxvf file1 file2 > file3

    eller

    diff file1 file2 | grep "<" | sed 's/^<//g'  > file3

    eller

    join -v 2 <(sort file1) <(sort file2) > file3
    ja, men hvilken en ville være den hurtigste ?
    Ved hjælp af to store tekst-filer, hvor den ene har et ekstra stykke tekst i starten, jeg timet alle fire metoder. Grep, diff, og deltag metoder, der alle har undladt at finde det ekstra stykke. De forskellige metoder, skal grep “>” i tillæg til “<” at arbejde. Jeg er ikke bekendt med grep eller deltage metoder. Resultaterne: komm: 3.661 s, grep: 0.035 s, diff: 0.051 s, deltage: 3.811 s
    Få et liv makker, der er kun så mange måder de kommandoer, der kunne være skrevet. Også det svar, du ikke at har en kommando, hvor jeg har leveret flere.

    OriginalForfatteren danmc

  2. 11

    En anden mulighed:

    sort file1 file2 | uniq -u > file3

    Hvis du ønsker at se flere identiske poster bruge “uniq -u” valgmulighed:

    sort file1 file2 | uniq -d > file3

    OriginalForfatteren pron

  3. 1

    Du kan også prøve at omfatte md5-hash-midler eller lignende må afgøre, om der er nogen forskel overhovedet. Derefter, kun sammenligne filer, som har forskellige hashes…

    hvordan gør jeg det ?
    Men er hashing to filer hurtigere end man sammenligner to filer?

    OriginalForfatteren P_M

  4. 0

    Dette vil arbejde hurtigt:

    Sag 1 – Fil2 = File1 + ekstra tekst vedlagt.

    grep -Fxvf File2.txt File1.txt >> File3.txt

    Fil 1: 80 Linjer
    Fil 2: 100 Linjer
    Fil 3: 20 Linjer

    OriginalForfatteren James Bond 86

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *