Hvordan sammenligne og slå sammen filer ved hjelp av diff3 Command på Linux
Kommandoen diff3
i Linux er et nyttig verktøy som sammenligner tre filer og viser forskjellene deres, noe som hovedsakelig er nyttig for programmerere og systemadministratorer som jobber med flere versjoner av samme fil og trenger å slå dem sammen, eller identifisere endringer mellom ulike versjoner.
I denne artikkelen vil vi gå gjennom det grunnleggende om bruk av diff3
-kommandoen, dens vanlige alternativer og noen få eksempler for å forstå hvordan det fungerer i Linux.
Hva er diff3-kommandoen?
diff3
er et verktøy som sammenligner tre filer linje for linje, identifiserer forskjellene og viser dem i et format som er lett å forstå.
Den kan brukes til:
- Finn forskjeller mellom de tre filene.
- Slå automatisk sammen endringer fra forskjellige filer.
- Håndtere konflikter som oppstår ved sammenslåing av filversjoner.
Kommandoen diff3
ligner på diff
-kommandoen eller sdiff-kommandoen, men fungerer med tre filer i stedet for to, noe som er spesielt nyttig når du har flere bidragsytere som jobber med samme fil, og du må slå sammen endringene deres til én enkelt versjon.
Grunnleggende syntaks for diff3-kommando
Den grunnleggende syntaksen til kommandoen diff3
er:
diff3 [options] file1 file2 file3
Forklaring av kommandoen ovenfor.
fil1
: Den første versjonen av filen.fil2
: Den andre versjonen av filen.fil3
: Den tredje versjonen av filen.
Vanlig brukte alternativer
Følgende er noen ofte brukte alternativer for kommandoen diff3
:
-e
: Lag et ed script som kan brukes til å bruke endringer på en fil.-m
: Slå sammen filene automatisk.-A
: Inkluder alle endringer fra alle filer.-E
: Forsøk å slå sammen filer selv om det blir funnet konflikter.-3
: Vis bare endringer som er forskjellige mellom alle tre filene.
Finne forskjeller mellom filer i Linux
La oss si at du har tre filer: fil1.txt
, fil2.txt
og fil3.txt
. Hver fil inneholder en litt annen versjon av det samme innholdet, og du ønsker å sammenligne dem for å se hvor forskjellene ligger.
For å sammenligne disse tre filene kan du bruke følgende kommando:
diff3 file1.txt file2.txt file3.txt
Her er hva denne utgangen betyr:
1:2c
: Dette viser at ifile1.txt
, skjer endringen på linje 2, og innholdet på linje 2 er Dette er linje 2.2:2c
: Dette viser at ifile2.txt
, skjer endringen også på linje 2, men innholdet på den linjen har blitt endret til Dette er endret linje 2. .3:2,3c
: Dette viser at ifile3.txt
er det endringer i linje 2 og 3. Linje 2 forblir den samme (Dette er linje 2.), men linje 3 er en tilleggslinje som sier: Dette er en tilleggslinje..
Slå sammen filer med diff3 i Linux
Hvis du vil slå sammen de tre filene og lage en ny fil med alle endringene, kan du bruke -m
-alternativet:
diff3 -m file1.txt file2.txt file3.txt
Dette vil sende ut det sammenslåtte innholdet med konfliktmarkører som viser hvor det er motstridende endringer.
Her er hva denne utgangen betyr:
<<<<<< fil1.txt
: Dette markerer begynnelsen på en konflikt og viser versjonen frafil1.txt
.||||||| file2.txt
: Denne linjen viser innholdet frafile2.txt
(midtfil i sammenligningen).=======
: Dette skiller de motstridende linjene.>>>>>>> file3.txt
: Dette markerer versjonen frafile3.txt
og slutten på konfliktblokken.
Du kan redigere dette manuelt for å beholde endringene du ønsker.
Bruke endringer fra flere filer til én med diff3
Du kan også bruke diff3
til å lage et ed
-skript som bruker endringer fra file2.txt
og file3.txt
til fil1.txt
. Dette kan gjøres ved å bruke -e
-alternativet:
diff3 -e file1.txt file2.txt file3.txt > scriptfile
Denne kommandoen oppretter en fil kalt scriptfile
som inneholder det genererte ed-skriptet, som du kan bruke ed
-kommandoen til å bruke skriptet fra scriptfile til file1.txt
.
ed file1.txt < scriptfile
Dette vil endre fil1.txt
i henhold til endringene spesifisert i skriptfilen, du kan verifisere med følgende cat-kommando for å se om endringene er tatt i bruk:
cat file1.txt
Dette er nyttig hvis du vil automatisere sammenslåingen av filer ved hjelp av skript.
Løse konflikter i diff3-sammenslåinger
Når du bruker diff3
for sammenslåing, kan det oppstå konflikter når det er forskjeller mellom alle tre filene på samme plassering. Disse konfliktene er merket i utdataene, og du må løse dem manuelt.
- For å løse konflikter, åpne filen som inneholder konfliktmarkørene.
- Rediger filen for å fjerne de uønskede linjene og behold endringene du ønsker.
- Etter å ha løst konflikten, lagre filen.
Konklusjon
Kommandoen diff3
er et kraftig verktøy for å sammenligne og slå sammen tre filer i Linux, noe som er spesielt nyttig for å håndtere flere versjoner av samme fil og løse konflikter ved sammenslåing av endringer.
Ved å forstå dens grunnleggende bruk og alternativer, kan du effektivt administrere filversjoner og samarbeide med andre om prosjekter.