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 u file1.txt promjena događa u retku 2, a sadržaj retka 2 je Ovo je red 2..
  • 2:2c: Ovo pokazuje da se u file2.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 u file3.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 iz file1.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 iz file3.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.