Hvordan sammenligne to filer i Linux

How Compare Two Files Linux



Hvis du vil sammenligne to filer og tyde forskjellen, kalles en kommando forskj benyttes. Denne guiden er fokusert på å gi deg bruken av forskj kommando med forskjellige alternativer for å få forskjellen mellom to filer.

Så, hvordan gjør forskj kommandoen faktisk fungerer? De forskj kommando sammenligner de to filene og sender ut en liste over forskjeller mellom begge filene. Mer presist gir den en liste over modifikasjoner som må gjøres i den første filen for å matche den andre filen. De forskj kommandoen brukes også av programmererne for å få forskjellen mellom to kildekodefiler for å utvikle oppdateringer.







Vær oppmerksom på at rekkefølgen på filene er veldig viktig før du dykker ned i eksemplene. Fordi det forskj kommandoen gir utdata basert på rekkefølgen på filene.



Slik bruker du diff -kommando i Linux til å sammenligne filer:

Syntaksen til forskj kommandoen er nevnt nedenfor:



$forskj [alternativer] [fil 1] [fil2]

Opprett først to filer. Jeg lager tekstfiler med navnet test_file_1.txt og test_file_2.txt . Disse filene inneholder innhold med en liten forskjell:





Bruk nå følgende kommando for å få forskjellen:



$forskjtest_file_1.txt test_file_2.txt

Standardutgangen viste linjene som samsvarer med rekkefølgen på filene nevnt i kommandoen. Så, la oss dekode utgangen:

Sammenligningen av filene er merket, og hver etikett har et tall på hver side. Formatet er som følger:

[Linjenummer for fil 1] [Etikett (a, c, d)] [Linjenummer for fil 2]

Det er tre etiketter:

  • til - Legg til: Legg til innhold i den første filen som skal synkroniseres med den andre filen.
  • c - Endring: Indikerer at en endring er nødvendig i innholdet i den første filen for å matche den andre filen.
  • d - Slett: Fjern innholdet fra den første filen som samsvarer med den andre.

2d1 indikerer å slette linje 2 i den første filen for å matche den andre filen fra linje 1.

På samme måte, 4c3 betyr å gjøre en endring i den fjerde linjen i den første filen for å matche linje nummer 3 i den andre filen, da begge linjene er litt forskjellige.

Det er en annen metode for å se forskjellen, bruk forskj kommando med -og alternativ:

$forskj -og -I 60test_file_1.txt test_file_2.txt

I utdataene ovenfor, innholdet i test_file_1.txt vises på venstre side, mens innholdet i text_file_2.txt vises på høyre side. Forskjellen er angitt med symbolene:

  • | - Linjen er annerledes i den andre filen
  • > - Linje er tillegg i den andre filen
  • <— Line has been deleted from the second file

-W angir bredden mellom innholdet i to filer. For å få separat og se forskjellen, bruk følgende:

$forskj -og -I 60 -undertrykke-felles-linjertest_file_1.txt test_file_2.txt

Hvordan få utgang på en linje ved hjelp av diff -kommandoen:

Hvis den merkede metoden er vanskelig for deg å dekode, er det en enklere tilnærming. Bruker -q alternativet med forskj kommandoen gir deg utdata på en linje. Vel, uten ytterligere informasjon, skjønt:

$forskj -qtest_file_1.txt test_file_2.txt

Hvis filene er forskjellige, vil kommandoen ovenfor gi en utgang. Hvis filene er identiske, blir det ingen utdata. For å demonstrere det, lager jeg en kopi av test_file_1.txt ved hjelp av:

$cptest_file_1.txt test_file_3.txt

En ny fil vil bli opprettet med navnet på test_file_3.txt som inneholder det samme innholdet som test_file_1.txt har. Bruk nå:

$forskj -qtest_file_1.txt test_file_2.txt

Siden begge filene har lignende innhold, ville det derfor ikke være noen utgang.

Hvordan kontrollere forskjellen på filer i kontekstmodus ved hjelp av diff -kommandoen:

For å få sammenligningen i kontekstmodus, -c alternativet vil bli brukt med forskj kommando:

$forskj -ctest_file_1.txt test_file_2.txt

La oss dissekere utgangen.

For å opprettholde forskjellen, indikeres den første filen med *** sammen med dato og klokkeslett for opprettelsen, mens den andre filen er angitt med -.

Den neste linjen betyr en rekke linjer som vurderes under sammenligning. For den første filen er det *** 1.6 **** og for den andre filen er det —1,5—- :

Forskjellen er angitt med symbolene:

  • +: Linjen er ikke tilstede i den første filen. Sett den inn i den første filen eller fjern den fra den andre filen for å matche begge filene.
  • -: Linjen finnes i den første filen, men ikke i den andre filen. Prøv å sette den inn i den andre filen eller fjern den fra den første for å matche begge filene.
  • ! : Linjen trenger endring for å kunne matche.

Hvordan kontrollere forskjellen på filer i enhetlig modus ved hjelp av diff -kommandoen:

Den enhetlige modusen er ganske lik kontekstmodusen, men uten overflødig informasjon. Flagget vi bruker er -u :

$forskj -utest_file_1.txt test_file_2.txt

I utgangen er den første filen angitt med - og den andre med +++. Den andre linjen viser antall linjer som vurderes for sammenligning i begge filene, deretter innholdet som skal slettes, legges til eller endres med symbolene. Det vil ikke være noe symbol med lignende linjer i begge filene.

Slik ignorerer du saksfølsomhet mens du bruker diff -kommandoen:

Hvis du vil sammenligne filene mens du ignorerer saksfølsomheten, bruker du -Jeg flagg:

$forskj -Jegtest_file_1.txt test_file_2.txt

For demonstrasjon har jeg laget D av Dypt inni i den første filen small:

Som sett i den første kommandoen, er forskjellen indikert; mens du bruker -Jeg at forskjellen er fjernet.

Noen andre nyttige alternativer for forskj kommandoen er oppført nedenfor:

Alternativ Beskrivelse
-til Dette alternativet behandler alle filene som tekstfiler
-B Den ignorerer endring der linjer er tomme
-OG Dette alternativet ignorerer faneutvidelse
-JEG Den ignorerer endringene der alle linjene stemmer overens
-s Gir utgang når to filer er identiske
-i Den ignorerer alt hvitt mellomrom
-MED Den ignorerer hvite mellomrom i linjeenden

Slik bruker du Vim Editor til å sammenligne to filer:

En annen metode for å sammenligne to filer er å bruke vimdiff kommando. For det må du ha vim installert:

$sudopassendeinstallere jeg kom

Nå, for å sammenligne to filer, bruk:

$vimdiff test_file_1.txt test_file_2.txt

Begge filene åpnes side om side. Den delen som ikke samsvarer vil bli uthevet:

Hvordan sammenligne to filer ved hjelp av colordiff:

En annen tilnærming er en slags forlengelse av forskj kommando. Du kan gjøre sammenligningen mer identifiserbar ved å legge til farger på den. For å installere bruk:

$sudopassendeinstallerekollega

For å sammenligne filer, bruk:

$colordiff test_file_1.txt test_file_2.txt

Du kan bytte ut forskj med kollega for å få standardutgangen til forskj kommando i farget format.

Konklusjon:

For å sammenligne filer i Linux og til og med i macOS, kalles et verktøy som brukes diff. Diff -verktøyet sammenligner to filer og gir informasjon om forskjellene mellom de to filene. Utviklerne bruker først og fremst diff -kommandoen for å lage oppdateringsfiler.

I denne guiden diskuterte vi grundig forskj kommando og hvordan du bruker den til å sammenligne to filer med forskjellige alternativer. Vi lærte også å bruke kollega for å gjøre filforskjellene mer gjenkjennelige. Men hvis du synes det er vanskelig å bruke terminalbasert verktøy, er det også noen GUI-baserte verktøy, for eksempel Kompare, DiffMerge, Meld-Diff Tool og Diffuse-GUI Giff Tool.