Hvordan sammenligne to tekstfiler ved hjelp av Linux

Hva å vite

  • For å sammenligne, kjør: diff fil1 fil2
  • Vis hvordan de er forskjellige med: diff -q fil1 fil2
  • Vis hvordan de er like med: diff -s fil1 fil2

Denne artikkelen forklarer hvordan du bruker Linux til å sammenligne to filer og sende ut forskjellene mellom filene til skjermen eller en fil. Du vil ikke installere spesiell programvare for å sammenligne filer med Linux, men du må vite hvordan åpne et terminalvindu.

Lag filene som skal sammenlignes

Hvis du vil følge med på denne veiledningen, lag to tekstfiler som inneholder lignende, men forskjellig tekst.

Lag den første filen

Lag en fil som heter fil 1 og skriv deretter inn følgende tekst:

10 grønne flasker stående på en vegg
10 grønne flasker stående på en vegg
Hvis en grønn flaske ved et uhell skulle falle
Det skulle stå 9 grønne flasker på veggen

Følg disse instruksjonene for å lage denne filen:

  1. Åpne filen ved å skrive inn følgende kommando:

    nano fil 1
    Terminalkommando: nanofil1

    Den raskeste måten å åpne et terminalvindu i Linux er å trykke på CTRL+ALT+T nøkler på samme tid.

  2. Skriv inn teksten nano-redaktøren.

    Terminalfil1 i Nano
  3. trykk CTRL+O for å lagre filen.

  4. trykk CTRL+X for å avslutte filen.

Lag den andre filen

Deretter oppretter du en annen fil som heter fil 2 og skriv inn følgende tekst:

10 grønne flasker stående på en vegg
Hvis 1 grønn flaske ved et uhell skulle falle
Det ville være 9 grønne flasker stående på veggen

Følg disse instruksjonene for å lage denne filen:

  1. Åpne filen ved å skrive inn følgende kommando:

    nano fil 2
  2. Skriv inn teksten i nano-editoren.

    Terminalfil2 i Nano
  3. trykk CTRL+O for å lagre filen.

  4. trykk CTRL+X for å avslutte filen.

Hvordan sammenligne to filer ved hjelp av Linux

Kommandoen som brukes i Linux for å vise forskjellene mellom to filer kalles diff-kommandoen.

Den enkleste formen for diff-kommandoen er som følger:

diff fil1 fil2

Hvis filene er de samme, vises ingen utdata når du bruker denne kommandoen. Men siden det er forskjeller, ligner utgangen på følgende:

2,4c2,3
< 10 grønne flasker stående på veggen
< Hvis én grønn flaske skulle falle ned ved et uhell
< Det skulle stå 9 grønne flasker på veggen
...
> Hvis 1 grønn flaske skulle falle ned ved et uhell
> Det ville være 9 grønne flasker stående på veggen

Til å begynne med virker utgangen forvirrende, men når du først forstår terminologien, er den ganske logisk.

Terminalkommando " diff file1 file2" i Linux

Forskjellene mellom de to filene er som følger:

  • Den andre filen har bare tre linjer. Den første filen har fire.
  • Den andre filen sier 1 grønn flaske på tredje linje. Den første filen sier en grønn flaske.
  • Den andre filen sier det røde i stedet for det ville på siste linje.

Utdataene fra diff-kommandoen viser at det er forskjeller mellom linje to og fire i den første filen og linje to og tre i den andre filen.

Den viser deretter linjene fra to til fire fra den første filen, etterfulgt av de to forskjellige linjene i den andre filen.

Slik viser du bare hvis filene er forskjellige

Hvis du bare vil vite om filene er forskjellige og du ikke er interessert i hvilke linjer som er forskjellige, kjør følgende kommando:

diff -q fil1 fil2

Hvis filene er forskjellige, vises følgende:

Filer fil1 og fil2 er forskjellige

Hvis filene er de samme, vises ingenting.

Hvordan vise en melding hvis filene er de samme

Når du kjører en kommando, vil du kanskje vite at den fungerte riktig. Du vil at en melding skal vises når du kjører diff-kommandoen om filene er like eller forskjellige.

For å oppnå dette kravet ved å bruke diff-kommandoen, bruk følgende kommando:

diff -s fil1 fil2

Hvis filene er de samme, vises denne meldingen:

Filene fil1 og fil2 er identiske

Hvordan produsere forskjellene side om side

Hvis det er flere forskjeller, kan det være forvirrende hva forskjellene faktisk er mellom de to filene. Du kan endre utdataene til diff-kommandoen slik at resultatene vises side om side. For å gjøre dette, kjør følgende kommando:

diff -y fil1 fil2

Utdataene for filen bruker | symbol for å vise forskjellen mellom de to linjene, a < for å vise en linje som er fjernet, og en > for å vise en linje som er lagt til.

Terminalkommando " diff -y file1 file2" i Linux

Når du kjører kommandoen ved hjelp av demonstrasjonsfilene i denne artikkelen, vises alle linjene som forskjellige bortsett fra den siste linjen i fil 2, som vises som slettet.

Begrens kolonnebredde

Når du sammenligner to filer side om side, kan det være vanskelig å lese hvis filene har flere kolonner med tekst. For å begrense antall kolonner, bruk følgende kommando:

diff --width=5 fil1 fil2

Hvordan ignorere saksforskjeller når du sammenligner filer

Hvis du vil sammenligne to filer, men du ikke bryr deg om store og små bokstaver er lik mellom de to filene, bruk følgende kommando:

diff -i fil1 fil2

Hvordan ignorere etterfølgende hvitt mellomrom på slutten av en linje

Hvis du merker mange forskjeller når du sammenligner filer og forskjellene er forårsaket av mellomrom på slutten av linjene, forhindrer du at disse vises som endringer ved å kjøre følgende kommando:

diff -Z fil1 fil2

Hvordan ignorere alle mellomromsforskjeller mellom to filer

Hvis du bare er interessert i teksten i en fil og du ikke bryr deg om det er flere mellomrom i den ene enn den andre, bruk følgende kommando:

diff -w fil1 fil2

Hvordan ignorere tomme linjer når du sammenligner to filer

Hvis du ikke bryr deg om at en fil kan ha ekstra tomme linjer i den, kan du sammenligne filene med følgende kommando:

diff -B fil1 fil2

Sammendrag

Du finner mer informasjon ved å lese manual for diff-kommandoen.

mann diff

Diff-kommandoen kan brukes i sin enkleste form for kun å vise forskjellene mellom to filer. Du kan også bruke den til å lage en diff-fil som en del av en lappestrategi.

En annen kommando du kan bruke til å sammenligne filer er cmp-kommandoen. Dette sammenligner filer byte for byte.