Kako usporediti i spojiti datoteke pomoću naredbe diff3 na Linuxu
Naredba diff3
u Linuxu je koristan alat koji uspoređuje tri datoteke i pokazuje njihove razlike, što je uglavnom korisno za programere i administratore sustava koji rade s više verzija iste datoteke i trebaju ih spojiti, ili identificirati promjene između različitih verzija.
U ovom ćemo članku proći kroz osnove korištenja naredbe diff3
, njezine uobičajene opcije i nekoliko primjera da bismo razumjeli kako funkcionira u Linuxu.
Što je naredba diff3?
diff3
je alat koji uspoređuje tri datoteke red po red, identificira razlike i prikazuje ih u formatu koji je lako razumjeti.
Može se koristiti za:
- Pronađite razlike između tri datoteke.
- Automatski spoji promjene iz različitih datoteka.
- Rješavanje sukoba koji se javljaju prilikom spajanja verzija datoteka.
Naredba diff3
slična je naredbi diff
ili naredbi sdiff, ali radi s tri datoteke umjesto s dvije, što je posebno korisno kada imate više suradnika koji rade na istoj datoteci, i trebate spojiti njihove promjene u jednu verziju.
Osnovna sintaksa naredbe diff3
Osnovna sintaksa naredbe diff3
je:
diff3 [options] file1 file2 file3
Objašnjenje gornje naredbe.
file1
: Prva verzija datoteke.file2
: Druga verzija datoteke.file3
: Treća verzija datoteke.
Često korištene opcije
Slijede neke najčešće korištene opcije naredbe diff3
:
-e
: Stvorite ed skriptu koja se može koristiti za primjenu promjena na datoteku.-m
: Automatski spoji datoteke.-A
: Uključi sve promjene iz svih datoteka.-E
: Pokušaj spojiti datoteke čak i ako se pronađu sukobi.-3
: Prikaži samo promjene koje se razlikuju između sve tri datoteke.
Pronalaženje razlika između datoteka u Linuxu
Recimo da imate tri datoteke: file1.txt
, file2.txt
i file3.txt
. Svaka datoteka sadrži malo drugačiju verziju istog sadržaja i želite ih usporediti da biste vidjeli gdje leže razlike.
Za usporedbu ove tri datoteke, možete koristiti sljedeću naredbu:
diff3 file1.txt file2.txt file3.txt
Evo što ovaj izlaz znači:
1:2c
: Ovo pokazuje da se ufile1.txt
promjena događa u retku 2, a sadržaj retka 2 je Ovo je red 2..2:2c
: Ovo pokazuje da se ufile2.txt
promjena također događa u retku 2, ali je sadržaj tog retka izmijenjen u Ovo je modificirani red 2. .3:2,3c
: Ovo pokazuje da ufile3.txt
postoje promjene u redovima 2 i 3. Redak 2 ostaje isti (Ovo je redak 2.), ali redak 3 je dodatni redak koji kaže: Ovo je dodan redak..
Spajanje datoteka s diff3 u Linuxu
Ako želite spojiti tri datoteke i stvoriti novu datoteku sa svim promjenama, možete upotrijebiti opciju -m
:
diff3 -m file1.txt file2.txt file3.txt
Ovo će ispisati spojeni sadržaj s oznakama sukoba koji pokazuju gdje postoje proturječne promjene.
Evo što ovaj izlaz znači:
<<<<<<< file1.txt
: Ovo označava početak sukoba i prikazuje verziju izfile1.txt
.- <šifra>||||||| file2.txt: Ovaj redak prikazuje sadržaj iz
file2.txt
(srednja datoteka u usporedbi). =======
: Ovo razdvaja sukobljene linije.>>>>>>> file3.txt
: Ovo označava verziju izfile3.txt
i kraj bloka sukoba.
Možete to ručno urediti kako biste zadržali željene promjene.
Primjena promjena iz više datoteka u jednu pomoću diff3
Također možete koristiti diff3
za izradu ed
skripte koja primjenjuje promjene iz file2.txt
i file3.txt
na datoteka1.txt
. To se može učiniti pomoću opcije -e
:
diff3 -e file1.txt file2.txt file3.txt > scriptfile
Ova naredba stvara datoteku pod nazivom scriptfile
koja sadrži generiranu ed skriptu, koju možete koristiti naredbom ed
za primjenu skripte iz scriptfile na file1.txt
.
ed file1.txt < scriptfile
Ovo će modificirati file1.txt
prema promjenama navedenim u datoteci skripte, možete provjeriti sljedećom cat naredbom da vidite jesu li promjene primijenjene:
cat file1.txt
Ovo je korisno ako želite automatizirati spajanje datoteka pomoću skripti.
Rješavanje sukoba u diff3 spajanjima
Kada koristite diff3
za spajanje, može doći do sukoba kada postoje razlike između sve tri datoteke na istoj lokaciji. Ti su sukobi označeni u izlazu i morat ćete ih ručno riješiti.
- Za rješavanje sukoba otvorite datoteku koja sadrži oznake sukoba.
- Uredite datoteku kako biste uklonili neželjene retke i zadržali promjene koje želite.
- Nakon rješavanja sukoba, spremite datoteku.
Zaključak
Naredba diff3
moćan je alat za usporedbu i spajanje triju datoteka u Linuxu, što je posebno korisno za rukovanje višestrukim verzijama iste datoteke i rješavanje sukoba prilikom spajanja promjena.
Razumijevanjem njegove osnovne upotrebe i opcija, možete učinkovito upravljati verzijama datoteka i surađivati s drugima na projektima.