Failide võrdlemine ja ühendamine

Käsurea võimalused

Kahe faili võrdlemine:

kdiff3 fail1 fail2

Kahe faili ühendamine:

kdiff3 fail1 fail2 -m
   kdiff3 fail1 fail2 -o väljundfail

Kolme faili võrdlemine:

kdiff3 fail1 fail2 fail3

Kolme faili ühendamine:

kdiff3 fail1 fail2 fail3 -m
   kdiff3 fail1 fail2 fail3 -o väljundfail

Pane tähele, et fail1 kujutab endast baasi fail2 ja fail3 jaoks.

Erijuhtum: ühenimelised failid
Kui kõigil failidel on sama nimi, aga nad asuvad erinevates kataloogides, võib kirjutamisvaeva vähendada, andes ainult esimese faili nime. Näiteks:

kdiff3 kataloog1/failinimi kataloog2 kataloog3

Kataloogide võrdlemine või ühendamine käsureal:
See käib samamoodi, ainult et tegu on kataloogidega.

kdiff3 kataloog1 kataloog2
   kdiff3 kataloog1 kataloog2 -o sihtkataloog
   kdiff3 kataloog1 kataloog2 kataloog3
   kdiff3 kataloog1 kataloog2 kataloog3 -o sihtkataloog

Kataloogide võrdlemisest ja ühendamisest saab täpsemalt lugeda siit.

Muud käsurea võtmed
Kõiki käsurea võtmeid näitab käsk

kdiff3 --help

Näidisväljund:

Võtmed:
  -m, --merge               Sisendi liitmine.
  -b, --base fail           Baasfail. Ühilduvuseks teatud tööriistadega.
  -o, --output fail         Väljundfail. Eelduseks -m. Nt.: -o newfile.txt
  --out fail                Taas väljundfail. (Ühilduvuseks teatud tööriistadega.)
  --auto                    GUI puudub, kui kõik konfliktid on automaatselt lahenevad. (Vajalik on -o file)
  --qall                    Konflikte ei lahendata automaatselt. (Ühilduvuseks...)
  --L1 alias1               Sisendfaili 1 (baas) näidatava nime asendus.
  --L2 alias2               Sisendfaili 2 näidatava nime asendus.
  --L3 alias3               Sisendfaili 3 näidatava nime asendus.
  -L, --fname alias         Alternatiivne näidatava nime asendus. Tuleb anda kord iga sisendi kohta.
  --cs string               Tühistab seadistuse. Tuleb anda eraldi iga seadistuse kohta. Näide: --cs "AutoAdvance=1"
  --confighelp              Näitab seadistusi ja nende kehtivaid väärtusi.
  --config fail             Mõne muu seadistustefaili kasutamine.

Võti --cs võimaldab muuta seadistuse väärtust, mida muidu saab muuta ainult seadistustedialoogi vahendusel. Kuid arvesta, et kui KDiff3 töö lõpetab, salvestatakse muudetud väärtus. Võtmega --confighelp näeb saadaolevate seadistuste nimesid ja nende kehtivaid väärtusi.
Võtmega --config saab määrata mõne muu seadistustefaili kasutamise. Kui kasutad sageli KDiff3 mitme täiesti erineva seadistusega, lubab see võti variantide vahel hõlpsasti lülituda.

Eiratavad käsurea võtmed
Paljud soovivad kasutada KDiff3 mõne versioonikontrollisüsteemiga. Aga kui versioonikontrollisüsteem kutsub KDiff3 välja käsureaparameetriga, mida KDiff3 ei tunne, lõpetab KDiff3 töö veaga. Lõimimisseadistused lubavad määrata kindlaks käsureaparameetrid, mida KDiff3 peab eirama. Neid näidatakse abiteates umbes nii:

miski                     Eiratakse (kasutaja määratud).

Eiratavad käsureavõtmed:	Võtmete nimekiri, eraldajaks semikoolon ';'. Kui käsureal esineb mõni määratud võtmetest, eirab KDiff3 seda ja töötab edasi veast teatamata. (Vaikimisi "u;query;html;abort").
Kui sellest ei piisa, on soovitatav kirjutada shelliskript, mis seab võtmed vastavusse.

Avamisdialoog
Et mitme sisendfaili korral nad lihtsalt peavad olema valitavad, on rakendusel eriline avamisdialoog:
Avamisdialoog võimaldab redigeerida failinimesid käsitsi, valida need failidialoogis ("Fail...") või kasutada rippmenüüs olevaid viimati kasutatud faile. Kui avad dialoogi uuesti, on seal kirjas parajasti aktiivsed failinimed. Kolmanda sisendvälja täitmine ei ole kohustuslik. Kui "C" tühjaks jätta, analüüsitakse ainult kahe faili erinevusi.
Nupule "Kataloog..." klõpsates saab valida kataloogi. Kui A jaoks on määratud kataloog, saab alustada kataloogide võrdlemist-ühendamist. Kui A on fail, kuid B, C või väljund kataloogid, kasutab KDiff3 A failinime määratud kataloogides.
Kui märkida "Ühenda", saab kasutada ka välja "Väljund". Siiski ei ole nõutav väljundfaili nime kohe määrata, selle võib edasi lükata ka salvestamise ajale.
Klõps nupule "Seadista..." avab valikute dialoogi, kus saab enne analüüsi midagi muuta, kui pead seda vajalikuks.

Sisendi asetamine ja lohistamine
Vahel võib tekkida vajadus võrrelda tekstilõke, mis ei kujuta endast omaette faile. KDiff3 võimaldab väga lihtsalt asetada teksti lõikepuhvrist parajasti fookuses olevasse võrdlemise sisendaknasse. Võrdlusanalüüs algab kohe seejärel. Avamisdialoogis ei ole sellisel juhul vajalik määrata faile, vaid selle võib kohe sulgeda klõpsuga nupule "Loobu".
Samuti võib kasutada lohistamist: lohista fail failihalduris või valitud tekst redaktorist ning kukuta see võrdlemise sisendaknasse.
Milleks see hea on? Mõnikord võib fail sisaldada kaht sarnast funktsiooni, kuid kontrollimine, kui sarnased nad ikkagi on, võib olla päris tülikas, kui sa pead näiteks kõigepealt looma kaks faili ja siis nad mõlemad avama. Nüüd aga on võimalik vajalikud osad lihtsalt kopeerida, asetada ja võrdlemine võibki alata.
Märkus: praegu ei ole võimalik midagi KDiff3-st välja lohistada, toetatud on ainult lohistamine võrdlemise sisendaknasse.
Hoiatus: mõned redaktorid tõlgendavad lohistamist muusse rakendusse mitte kopeerimise, vaid lõikamisena. See tähendab, et sa võid kaotada oma esialgsed andmed.

Failide võrdlemine ja info tõlgendamine sisendaknas

Inforiba
Iga tekstiakna ülaservas asub "inforiba". Sisendakende inforibal seisab täht "A", "B" või "C", failinimi, sirvimisnupp ning aknas esimesena näha oleva rea number. (Pane tähele, et akent "C" ei pruugi olemas olla.) Iga inforiba on erinevat värvi.
Kui valid sirvides mõne muu faili või lõpetad failinime redigeerimise klahvile Enter vajutades, laaditakse uus fail ja võrreldakse seda juba laaditud faili(de)ga.

Värvid
Kolmele sisendaknale on omistatud tähed "A", "B" ja "C". "A" värviks on sinine, "B" roheline ja "C" magenta. Need on vaikeväärtused, mida saab muuta seadistustemenüüst.
Erinevuse avastamisel näitab värv, milline sisendfail erineb. Kui erinevad mõlemad sisendfailid, siis väljendab seda vaikimisi punane värv (seadistuste kohaselt "konflikti värv"). Värviskeem tuleb eriti kasuks kolme sisendfaili korral, mida võib näha järgmises osas (Ühendamine).

Kokkuvõttetulp
Igast tekstist vasakul asub "kokkuvõttetulp". Kui real on erinevusi, näitab kokkuvõttetulp vastavat värvi. Ainult tühimärkide erinevuse korral on kokkuvõttetulbal näha ruuduline muster. See on abiks programmeerimiskeelte korral, kus tühimärkidel ei ole erilist tähendust, võimaldades ühe hetkega tuvastada, kas on ka mingeid olulisi muudatusi (näiteks C/C++ korral on tühimärkidel mingi roll ainult stringides, kommentaarides, preprotsessoris ja veel mõnel äärmiselt esoteerilisel juhtumil).
Kokkuvõttetulpa ja teksti lahutav püstjoon on katkestatud, kui sisendfailis pole selles kohas ühtki rida. Reamurdmise lubamisel on püstjoon murtud ridade juures punkteeritud.

Ülevaateriba
Paremal on otse kerimisriba kõrval näha "ülevaateriba". See näitab kokkusurutult sisendfaili "A" kokkuvõttetulpa. Nii on kõik erinevused ja konfliktid korraga näha. Kui kasutada ainult kaht sisendakent, on kõik erinevused punased, sest iga erinevus on sellisel juhul ju ka konflikt. Must ristkülik tähistab parajasti aknas näha olevat tekstiosa. Väga pikkade sisendfailide korral, kus sisendi ridade arv on suurem kui ülevaatetulba kõrgus pikslites, mahutatakse ühele ülevaatereale mitu sisendirida. Konflikti näitamist eelistatakse sellisel juhul tavalisele erinevusele ning viimast muutmata olekule, nii ei jää kindlasti nägemata ükski erinevus või konflikt. Ülevaateribale klõpsates näidatakse vastavat kohta tekstis.

Ridade joondamine käsitsi
Vahel seab algoritm kõrvuti valed read. Võib ka juhtuda, et soovid võrrelda mingit tekstilõiku teises failis täiesti teises kohas asuva lõiguga. Sel juhul saad anda KDiff3-le käsitsi korralduse teatud read joondada. Märgi esimeses vaates tekst, mida soovid kasutada (tee seda hiirega, nagu kopeerimise puhul), ning seejärel vali käsk "Lisa käsitsi samasus" menüüst "Võrdlemine" (kiirklahv "Ctrl+Y"). Valitud teksti kõrvale ilmub kokkuvõttetulbas oranž riba. Korda sama tegevust teises ja vajaduse korral kolmandaski vaates. KDiff3 leiab iga toimingu järel automaatselt erinevused ja joondab valitud read. Loomulikult on sel juhul võimalik, et teatud varasemad sobivused kuskil vahepeal enam ei klapi.
Praegu ei ole ühendamisel toetatud käsitsi erinevuste kasutamine.

Erinevuse osade käsitsi ühendamine ja lahutamine
Mõnel juhul võib tekstis olla KDiff3 jaoks liiga vähe või liiga palju erinevaid osasid, et neid ühendada. Sel juhul võib olemasolevad osad liita või lahutada.
Uute lõikude lisamiseks vali kõigepealt mõnes sisendaknas read, mis kuuluvad kokku (tee seda samamoodi nagu lõikepuhvrisse kopeerimisel). Seejärel vali käsk "Jaga erinevused valiku juures" menüüst "Ühendamine". Jagatud osad lisatakse valitud teksti esimese rea ette ja viimase rea järele. Kui soovid lisada ainult ühe lõigu, vali tekst mõne muu lõigujagamise alguses.
Lõikude liitmiseks ükspuha kumbas sisendaknas vali read lõikudes, mida soovid liita (ühekorraga võib liita mitu lõiku). Seejärel vali käsk "Ühenda valitud erinevused" menüüst "Ühendamine".

Ühendamine ja ühendamisväljundi redigeerimisaken
Ka ühendamisväljundi redigeerimisaknal (allpool võrdlemise sisendaknaid) on ülaservas inforiba, kus seisab "Väljund:", failinimi ja "[Muudetud]", kui oled midagi muutnud. Tavaliselt leidub seal automaatse ühendamise vahendite pakutav tekst, kuid tihtipeale ka konfliktid.
!!! Salvestamine on võimalik alles siis, kui kõik konfliktid on lahendatud !!! (allesjäänud konfliktide lahendamiseks kasuta nuppe "Liigu eelmisele/järgmisele lahendamata konfliktile")
Kui on ainult kaks sisendfaili, on iga erinevus ühtlasi konflikt, mis tuleb käsitsi lahendada.
Kolme sisendfaili korral käsitletakse esimest baasina, teist ja kolmandat aga potentsiaalseid muudatusi sisaldavate failidena. Kui muudetud on rida ainult sisendis B või C, aga mitte mõlemas, valitakse automaatselt muudetud allikas. Kui aga nii B kui C on (erinevalt) muutnud üht ja sama rida, märgitakse see konfliktina, mis tuleb käsitsi lahendada. Kui B ja C on ühesugused, aga erinevad A-st, valitakse C.

Kokkuvõttetulp
Ka ühendamisväljundi redigeerimisaknal on vasakus servas kokkuvõttetulp. See näitab sisendi tähte, millest rida on valitud, või mitte midagi, kui rida on kõigis kolmes allikas võrdne. Konflikti korral on seal küsimärk "?" ning real endal seisab "<Ühendamise konflikt>, kõik ilusasti puust ja punaseks tehtud. Kuna konfliktide lahendamine rida-realt võib võtta päris palju aega, on read rühmitatud gruppidesse, millel on ühesugused erinevuse ja konflikti omadused. Samas on ainult tühimärkide konfliktid eraldatud muudest konfliktidest, et hõlbustada selliste failide ühendamist, kus taanet on muudetud paljudel ridadel.

Aktiivse grupi määramine ning ühendamise ja võrdlemise vaadete sünkroniseerimine
Kui klõpsata hiire vasaku nupuga kokkuvõttetulbal mis tahes aknas, siis valitakse selle rea grupp kõigis akendes ning näidatakse antud grupi algust (see võib kaasa tuua automaatse asukohavahetuse akendes, kui grupi algus ei ole parajasti näha). Valitud grupp muutub sellega "aktiivseks grupiks", see tõstetakse esile "praeguse vahemiku tausta värviga" ning tekstist vasakule ilmub must tulbake.

Sisendi A, B või C valimine aktiivse konflikti ja redigeerimise jaoks
Nupureal menüüriba all on näha kolm sisendi valimise nuppu tähtedega "A", "B" ja "C". Klõpsa ühele neist vastava allika ridade lisamiseks (või eemaldamiseks, kui need on juba lisatud). Mitme sisendi ridade valimiseks klõpsa vajalikele nuppudele vajalikus järjekorras. Kui näiteks soovid, et "B" read oleks väljundis "A" ridadest eespool, klõpsa kõigepealt "B" ja siis "A".
Kui kasutad automaatse edasiliikumise võimalust ("Automaatne liikumine järgmisele lahendamata konfliktile pärast allika valimist"), tuleb see välja lülitada, enne kui valid mitme sisendi read või soovid pärast valikut ridu redigeerida. Vastasel juhul hüppab KDiff3 pärast esimese sisendi valimist järgmise konflikti juurde.
Sageli on kasulik ühendamise väljundit otseselt redigeerida. Kokkuvõttetulp näitab iga käsitsi muudetud rea juures tähte "m". Kui erinevused paiknevad viisil, et lihtne sisendi valimine ei anna rahuldavat tulemust, võid märkida vajaliku teksti, selle kopeerida ja asetada otse ühendamise väljundisse.
Vahel võib juhtuda, et rida eemaldatakse automaatse liitmisega või redigeerides. Kui gruppi ei ole jäänud enam ühtki rida, ilmub sellele reale tekst <Lähterida puudub>. See on kõigest grupi kohatäitja juhuks, kui muudad meelt ja valid taas mõne allika. Seda teksti ei ole näha ei salvestatud failis ega kopeeritavates/asetatavates valikutes.
Tekst "<Ühendamise konflikt>" seevastu liigub küll lõikepuhvrisse, kui valida ja kopeerida/asetada sellist rida sisaldav tekst. Seepärast tasuks sellise võimalusega ettevaatlik olla.

Sisendi A, B või C valimine kõigile konfliktidele
Tavaline ühendamine lahendab lihtsad konfliktid automaatselt. Menüü "Ühendamine" pakub lisaks mõningaid toiminguid muude levinumate vajaduste rahuldamiseks. Kui sul tuleb enamasti konfliktide puhul valida üks ja sama baas, võid valida kõikjal "A", "B" või "C" või ainult veel lahendamata konfliktidele või ainult lahendamata tühimärkide konfliktidele. Kui soovid lahendada iga erinevuse ise käsitsi, võid lülitada sisse võimaluse "Määra erinevused konfliktideks". Kui soovid aga taas panna KDiff3 automaatselt konflikte lahendama, vali "Lahenda automaatselt lihtsad konfliktid". Seejärel alustab KDiff3 uuesti ühendamist. Kui selle käigus muudetakse midagi, mida oled varem muutnud, küsib KDiff3 enne jätkamist, mida soovid teha.
Märkus: kui valid lahendamata tühimärkide konfliktide baasi ning võimalus "Numbreid ignoreeritakse" või "C/C++ kommentaare ignoreeritakse" on sisse lülitatud, koheldakse muutusi numbrites või kommentaarides samuti tühimärkidena.

Versioonikontrolli võtmesõnade ja ajaloo (logi) automaatne ühendamine
Paljud versioonikontrollisüsteemid toetavad failis spetsiaalsete võtmesõnade kasutamist (nt. "$Date$", "$Header$", "$Author$", "$Log$" jne.). Väljavõtte tegemise ajal muudab versioonikontrollisüsteem neid ridu. Näiteks "$Date$" asemele tuleb "$Date: 2005/03/22 18:45:01 $". Et selline rida on faili iga versiooni puhul erinev, on ühendamise ajal vajalik käsitsi sekkumine.
KDiff3 võimaldab neid automaatselt ühendada. Lihtsate ridade puhul, mis sobivad valikuga "Automaatse ühendamise regulaaravaldis" kõigis sisendfailides, valib KDiff3 rea B-st või, kui see on olemas, C-st. (Lisaks on vajalik, et mainitud read oleks võrdluses kõrvuti ja eelmine rida ei sisaldaks konflikti.) Automaatse ühendamise saab sooritada kohe ühendamise alates (selleks peab olema sisse lülitatud "Regulaaravaldisega automaatne ühendamine ühendamise alustamisel") või hiljem menüükäsuga "Käivita regulaaravaldisega automaatne ühendamine".
Automaatne ühendamine on toetatud ka versioonikontrolli ajaloo ehk logi puhul. Ajaloo automaatse ühendamise võib käivitada ühendamise alustamisel, kui sisse on lülitatud "Versioonikontrolli ajaloo ühendamine ühendamise alustamisel", või hiljem menüükäsuga "Lahenda automaatselt ajalookonfliktid".
Tavaliselt algab versioonikontrolli ajalugu reaga, kus seisab võtmesõna "$Log$". See peab sobima kokku valikuga "Ajaloo alguse regulaaravaldis". KDiff3 tuvastab seejärel, millised järgnevad read kuuluvad ajalukku, anaküüsides juhtmärke enne võtmesõna "$Log$". Kui samasugused "kommentaari sissejuhatuse" märgid esinevad ka järgnevate ridade alguses, kuuluvad need ajalukku.
Iga väljavõtte ajal kirjutab versioonikontrollisüsteem unikaalse rea, mis määrab ära versiooni, kuupäeva ja kellaaja, sellele järgnevad kasutaja kommentaariga read. Need moodustavadki ühe ajalookirje. Ajaloosektsioon kasvab iga versioonikontrolli toiminguga, kusjuures viimane kirje on alati kõige ees (otse ajaloo algusrea järel).
Paralleelse arendustegevuse ajal võivad kaks või enam arendajat failiga tegelda, millisel juhul ühendamise ajalugu sisaldab mitut kirjet, mis harude ühendamisel satuvad konflikti. Et nende ühendamine võib olla üsna vaevaline, toetab KDiff3 kaht strateegiat: mõlema/kõigi arendajate ajaloo lisamine etteotsa või ajaloo sorteerimine kasutaja määratud võtme järgi.
Esimene variant on kõige lihtsam. KDiff3 peab lihtsalt tuvastama, millised read moodustavad ühe ajalookirje. Enamik versioonikontrollisüsteeme lisab iga ajalookirje järele tühja rea. Kui muid tühje ridu pole, piisab sellest KDiff3-le. Sel juhul olgu "Ajaloo alguse regulaaravaldis" lihtsalt tühi. Kui tühjast reast ainuüksi ei piisa, võid koostada regulaaravaldise, mis tuvastab ajalookirje alguse.
Pane tähele, et KDiff3 eemaldab topeltajalookirjed. Kui sisendfailis esineb ajalookirje mitmel korral, siis väljundisse jääb alles ainult üks kirje.
Kui soovid ajalugu sortida, tuleb määrata sorteerimisvõti. Kasuta väljal "Ajaloo alguse regulaaravaldis" sulge regulaaravaldise nende osade rühmitamiseks, mida hiljem kasutada sorteerimisvõtmena. Seejärel määra "ajaloo sortimisvõtmete järjekord", milles komaga (",") eraldatud arvud viitavad grupi positsioonile regulaaravaldises.
See ei pruugi otsekohe õnnestuda, mistõttu tasub regulaaravaldist ja võtme genereerimist testida spetsiaalses dialoogis, mis avaneb klõpsuga nupule "Regulaaravaldiste test".
Näide: oletame, et ajalugu näeb välja nii:

/**************************************************************************
** HISTORY:    $Log: \toms_merge_main_view\MyApplication\src\complexalgorithm.cpp $
**
**     \main\integration_branch_12   2 Apr 2001 10:45:41   tom
**  Merged branch simon_branch_15.
**
**     \main\henry_bugfix_branch_7\1   30 Mar 2001 19:22:05   henry
**  Improved the speed for subroutine convertToMesh().
**  Fixed crash.
**************************************************************************/

Ajaloo algusrida vastab regulaaravaldisele ".*\$Log.*\$.*". Sellele järgnevad ajalookirjed.
Real võtmesõnaga "$Log$" seisab alguses kaks "*", millele järgneb tühik. KDiff3 hindab esimese mittetühimärgist stringi "kommentaari alguseks" ning eeldab, et ajalugu lõpeb esimesel real, millel kommentaari algust enam ei seisa. Näites lõpeb viimane rida stringiga, mille alguses on samuti kaks "*", kuid tühimärgi asemel järgneb veel rida märke "*". Seetõttu hinnatakse seda ajaloo lõpuks.
Kui ajaloo sortimist pole vaja, siis võib ajalookirje alguse regulaaravaldis näha välja umbes järgmine (rida on jagatud kaheks, sest see ei mahu muidu ära).

\s*\\main\\\S+\s+[0-9]+ (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)
 [0-9][0-9][0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]\s+.*

Täpsemalt kõneleb regulaaravaldistest Trolltechi regulaaravaldiste dokumentatsioon. Pane tähele, et "\s" (väike "s") on suvaline tühik, "\S" (suur "S") iga mittetühik. Meie näites sisaldab ajalookirje algul versiooniteavet vastavalt regulaaravaldisele "\\main\\\S+", kuupäeva päevaga "[0-9]+", kuuga "(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)" ja aastaga "[0-9][0-9][0-9][0-9]", kellaaega "[0-9][0-9]:[0-9][0-9]:[0-9][0-9]" ning lõpuks ka arendaja kasutajanime ".*".
Pane tähele, et kommentaari alguse märgid (näites "**") eemaldab KDiff3 juba enne otsingu alustamist, mistõttu regulaaravaldise alguses seisab nulli või enama tühimärgi vaste "\s*". Et kommentaarimärgid võivad failiti erineda (nt. C/C++ kasutab teistsuguseid kommentaarimärke kui Perli skript), kannab KDiff3 ise alguses seisvate kommentaarimärkide eest hoolt ja sul pole vaja neid regulaaravaldises määrata.
Kui soovid ajalugu sortida, tuleb arvutada sortimisvõti. Selleks tuleb regulaaravaldise vajalikud osad sulgude abil rühmitada (need sulud võivad avaldisse jääda ka siis, kui ajaloo sortimine välja lülitatakse).

\s*\\main\\(\S+)\s+([0-9]+) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)
 ([0-9][0-9][0-9][0-9]) ([0-9][0-9]:[0-9][0-9]:[0-9][0-9])\s+(.*)

Sulgudes on nüüd 1) versiooniteave, 2) kuupäev, 3) kuu, 4) aasta, 5) kellaaeg, 6) nimi. Aga kui me soovime sortida kuupäeva ja kellaaja järgi, tuleb luua võti, milles elemendid on teises järjekoras: esimesena aasta, siis kuu, päev, kellaaaeg, versiooniteave ja nimi. Sestap tuleb sortimisvõtme järjekorraks määrata "4,3,2,5,1,6".
Et kuunimed ei ole sortimiseks kuigi head ("Apr" oleks esimene), tuvastab KDiff3 kuude järjekorra ja kasutab nende nime asemel hoopis järjekorranumbrit ("Apr"->"04"). Kui leitakse number, teisendatakse see neljakohaliseks, lisades sortimise huvides ette nullid. Lõpuks näeb esimese ajalookirje algusrea sortimisvõti välja järgmine:

2001 04 0002 10:45:41 integration_branch_12   tom

Täpsemalt räägib sellest ka osa Ühendamise seadistused.

Liikumine ja redigeerimine
Enamasti saab liikuda kerimisribade ja hiirega, kuid soovi korral on võimalik liikuda ka klahvidega. Kui klõpsata mis tahes aknasse, saab sarnaselt muude rakendustega kasutada noolenuppe, Page Up ja Page Down, Home, End, Ctrl+Home, Ctrl+End. Liikumiseks saab kasutada ka sisendafailide kerimisribast paremal pool asuvat ülevaateriba, mis võimaldab vajalikule kohale liikuda klõpsuga riba vajalikule kohale.
Üles-alla kerimiseks saab kasutada ka hiireratast.
Ühendamisväljundi redigeerimisaknas saab samuti kasutada kõiki tavalisi teksti redigeerimisel kasutatavaid klahve. Klahviga Insert saab lülitada lisamis- ja ülekirjutamisrežiimi (vaikimisi kehtib lisamisrežiim).
Klõps hiire vasaku nupuga mis tahes kokkuvõttetulbal sünkroniseerib kõik aknad, nii et neid näitavad üht ridadegruppi (seda selgitas lähemalt osa Grupi määramine ning ühendamis- ja võrdlemisvaate asukoha sünkroniseerimine).
Nupureal on üheksa liikumisnuppu, millega saab hüpata aktiivsele/esimesele/viimasele erinevusele, eelmisele/järgmisele erinevusele (Ctrl+Nool üles/Ctrl+Nool alla), eelmisele/järgmisele konfliktile (Ctrl+Page Down/Ctrl+Page Up) või eelmisele/järgmisele lahendamata konfliktile. Pane tähele, et KDiff3 jaoks jääb "konflikt", mida ei lahendata automaatselt ühendamise alguses, "konfliktiks" ka pärast selle käsitsi lahendamist. Seepärast on ka eristatud "lahendamata konfliktid".

Automaatne edasiliikumine
Lisaks neile on nupp "Pärast allikavalikut liigutakse automaatselt järgmisele lahendamata konfliktile". Seda sisse lülitades hüppab KDiff3 allika valimisel automaatsel selles leiduval lahendamata konfliktile. See on abiks, kui soovid tavaliselt valida ainult ühe allika. Kui sul läheb vaja mõlemat allikat või soovid pärast valimist tegelda redigeerimisega, on tõenäoliselt mõttekas see välja lülitada. Enne järgmisele lahendamata konfliktile liikumist näitab KDiff3 hetkeks langetatud valiku toimet. Kui kaua see näitamine kestab, saab määrata seadistustes: "automaatse edasiliikumise viivitus" on võimalik määrata millisekundites 0 ja 2000 vahel. Vihje: kas oled tüdinud kogu aeg klõpsamast? Kasuta siis pisikest automaatse edasiliikumise viivitust ning kiirklahve Ctrl+1/2/3 A/B/C valimiseks.

Valimine, kopeerimine ja asetamine
Sisendaknas kursorit ei näidata, seepärast tuleb valimine teha hiirega, klõpsates vasaku nupuga valiku alguses, hoides nuppu all ja liikudes valiku lõppu, pärast mida võib nupu vabastada. Sõna saab valida ka sellel topeltklõpsu tehes. Ühendamisväljundi redigeerimisaknas saab valida ka klaviatuuri abil, hoides all klahvi Shift ja liikudes noolenuppudega.
Kui valik ulatub üle nähtava ala, võib viia hiire üle akna piirde, millisel juhul KDiff3 kerib hiirekursori suunas.
Väga suure valiku korral võib kasutada ka hiirenuppu all hoides navigeerimisklahve. Näiteks konkreetsesse kohta jõudmiseks võib tarvitada klahve Page Up ja Page down. Õigesse kohta jõudes vabasta hiirenupp.
Aktiivses aknas kõige valimiseks kasuta menüükäsku "Redigeerimine"->"Vali kõik" (Ctrl+A).
Lõikepuhvrisse kopeerimiseks tuleb vajutada nuppu "Kopeeri" (Ctrl+C või Ctrl+Insert). Lisaks sellele on olemas ka võimalus "Valiku automaatne kopeerimine". Selle sisselülitamisel kopeeritakse kõik, mida oled valinud, automaatselt ning sul puudub vajadus anda mis tahes moel kopeerimiskäsku. Kuid ole selle võimalusega ettevaatlik, sest nii võib kogemata üle kirjutada vajaliku lõikepuhvri sisu.
"Lõika" (Ctrl+X või Shift+Delete) kopeerib valiku lõikepuhvrisse ja kustutab selle failist.
"Aseta" (Ctrl+V või Shift+Insert) lisab lõikepuhvris oleva teksti kursori asukohta või asendab lõikepuhvri sisuga parajasti valitud teksti. Kui asetad lõikepuhvri sisu ükspuha millisesse sisendaknasse, näidatakse seda seal otsekohe ja alustatakse aega viitmata uuesti võrdlemist. See on kasulik siis, kui soovid kiiresti kuskilt teksti võtta ja võrrelda seda millegi muuga, ilma et peaksid eelnevalt faili looma hakkama.

Salvestamine
Salvestamine on võimalik ainult siis, kui kõik konfliktid on lahendatud. Kui fail on juba olemas ning sisse on lülitatud valik "Failidest tehakse varukoopia", antakse olemasolevale failile laiend ".orig". Kui selline peaks juba olemas olema, see kustutatakse. Kui väljud või oled alustanud uud võrdlusanalüüsi ning andmeid ei ole veel salvestatud, pärib KDiff3 sinu käest, kas soovid salvestada, loobuda või jätkata ilma salvestamata (KDiff3 ei salvesta andmeid seesmiselt, nii et kui KDiff3 väljastpoolt "tappa", lähevad andmed kaotsi).
Realõpud salvestatakse vastavalt operatsioonisüsteemi tavale. UNIXi korral lõpetab rea reavahetusmärk "\n", Win32 süsteemides kelgu tagastamise sümbol pluss reavahetusmärk "\r\n". KDiff3 ei säilita sisendfailide realõppe, mis ühtlasi tähendab, et KDiff3 kasutamisel binaarfailidega peaks olema erakordselt ettevaatlik.

Stringide otsimine
Stringe saab otsida KDiff3 kõigis tekstiakendes. Redigeerimismenüü käsk "Otsi..." (Ctrl+F) avab dialoogi, kus saab määrata, mida otsida. Samuti saab valida, millises aknas otsida. Otsimine algab alati teksti algusest. Käsk "Otsi järgmine" (F3) viib otsitava stringi järgmise esinemise juurde (kui seda muidugi on). Kui valid otsimise mitmes aknas, otsitakse esmalt ülalt alla läbi esimene aken, seejärel taas ülalt alla teine aken jne.

Trükkimine
KDiff3 toetab tekstifailide erinevuste trükkimist. Menüüs fail leiduv käsk "Trüki..." (Ctrl+P) avab dialoogi, kus saab valida printeri ja muuta teatud valikuid.
Mitmel moel saab kindlaks määrata, millist vahemikku trükkida. Et erinevates operatsioonisüsteemides on trükkimisdialoog erinev, siis on ka trükkimisvahemiku määramises teatud erinevusi.
Kõik:	Trükitakse kõik.
Aktiivne:	Trükitakse lehekülg alates aknas esimesena näha olevast reast (süsteemides, kus seda valikut pole, saab sama tulemusi, kui määrata trükkimiseks lehkülg 10000).
Valik:	Enne trükkimiskäsku tuleb sel juhul valida mõnes sisendaknas hiirega tekst (nagu kopeerimisel), mis paneb paika trükitava valiku algus- ja lõpurea. Kui üheski sisendaknas pole midagi valitud, ei saa seda võimalust kasutada (süsteemides, kus see valik üldse puudub, saab sama tulemuse, kui määrata trükkimiseks lehekülg 9999).
Vahemik:	Trükitakse määratud esimesest kuni määratud viimase leheküljeni.
Ülejäänud trükkimisvalikud on tavapärasemad:
Font, fondi suurus
Reanumbrite näitamine
Reamurdmine
Värvid
jne.
Trükkida on soovitatav rõhtpaigutusega.

Valikud
Valikud ja viimati avatud failide nimekiri salvestatakse alati, kui rakendusest väljud, ning laaditakse uuesti rakenduse taaskäivitamisel (menüükäsk Seadistused -> KDiff3 seadistamine...)

Font
Valib fikseeritud laiusega fondi (mõnes süsteemis pakub dialoog ka muutuva laiusega fonti, kuid seda ei tasuks kasutada).
Kaldkiri erinevustele:	Selle valimisel näidatakse teksti erinevusi valitud fondi kaldkirjas. Kui valitud font kaldkirja ei toeta, ei tee see midagi.

Värvid
Esiplaani värv:	Tavaliselt must.
Tausta värv:	Tavaliselt valge.
Erinevuse tausta värv:	Tavaliselt helehall.
Värv A:	Tavaliselt tumesinine.
Värv B:	Tavaliselt tumeroheline.
Värv C:	Tavaliselt tume magenta.
Konflikti värv:	Tavaliselt punane.
Praeguse vahemiku tausta värv:	Tavaliselt helekollane.
Praeguse vahemiku erinevuse tausta värv:	Tavaliselt tumekollane.
Käsitsi määratud samasuse vahemiku värv:	Tavaliselt oranž.
Uusima faili värv kataloogide võrdlemisel:	Tavaliselt roheline.
Vanima faili värv kataloogide võrdlemisel:	Tavaliselt punane.
Keskmise vanusega faili värv kataloogide võrdlemisel:	Tavaliselt tumekollane.
Puuduvate failide värv kataloogide võrdlemisel:	Tavaliselt must.
Kataloogide võrdlemise värvide muutmine rakendub alles järgmise kataloogide võrdlemise ajal.
Ainult 16 või 256 värviga süsteemides ei pruugi mõned värvid puhtal kujul saadaval olla. Sellistes süsteemides valib puhta värvi nupp "Vaikeväärtused".

Redaktori seadistused
TAB lisab tühikud:	Kui see ei ole sees, lisatakse tabeldusklahvile vajutades tabeldusmärk, kui see on sees, vastav kogus tühikuid.
TABi suurus:	Kohandatav oma maitsele. Vaikimisi 8.
Automaatne taandus:	Vajutades klahvile Enter, kasutatakse uuel real eelmise rea taandust.
Valiku automaatne kopeerimine:	Iga tekstivalik kopeeritakse otsekohe lõikepuhvrisse, ilma et oleks vaja anda spetsiaalset kopeerimiskäsku.
Realõpu stiil:	Salvestamisel saab valida, millist realõpu stiili eelistada. Vaikimisi on see valitud operatsioonisüsteemi põhjal.

Erinevuse seadistused
Faile võrreldes püüab KDiff3 kõigepealt seada kokku read, mis on kõigis sisendfailides ühtmoodi. Ainult sel etapil võib ta eirata tühimärke. Teisel etapil võrreldakse iga rida ning nüüd võetakse arvesse ka tühimärgid. Tühimärke ei ignoreerita ka ühendamisel.
Säilitatakse reavahetus:	Mõned redaktorid mõnes süsteemis salvestavad iga rea lõpu kelgu tagastuse märgiga '\r' ning reavahetusmärgiga '\n', teised aga ainult reavahetusmärgiga '\n'. Üldiselt KDiff3 ignoreerib kelgu tagastuse sümbolit, kuid sellisel juhul võivad tegelikult erineva suurusega failid paista võrdlemisel ühesugustena. Selle valiku sisselülitamisel on kelgutagatusmärgid näha, kuid neid koheldakse tühimärkidena. Ühendamise ajal tuleb see võimalus välja lülitada. Vaikimisi on väljas.
Numbreid ignoreeritakse:	Vaikimisi väljas. Numbrilisi sümboleid ('0'-'9', '.', '-') ignoreeritakse analüüsi esimeses, üldvõrdlevas osas. Lõpptulemuses näidatakse siiski erinevusi, aga neid käsitletakse kui tühimärke.
C/C++ kommentaare ignoreeritakse:	Vaikimisi väljas. Muudatusi kommentaarides tõlgendatakse tühimärkide muudatustena.
Tõstu ignoreeritakse:	Vaikimisi väljas. Märkide tõstu erinevusi (nt 'A' ja 'a') tõlgendatakse nagu tühimärkide muudatusi.
Eeltöötluse käsk:	Vaata järgmist osa.
Ridade sobivuse eeltöötluse käsk:	Vaata järgmist osa.
Karm uurimine:	Püüab tuvastada ka kõige pisemad erinevused. Vaikimisi sees. Ilmselt on sellest rohkem kasu keerulisemate ja suurte failide korral. Aga mõistagi on see väga suurte failide puhul ka väga aeglane.

Ühendamise seadistused
Automaatse edasiliikumise viivitus (ms):	Kui automaatne edasiliikumine on sisse lülitatud, määrab see võimalus, kui kaua näidatakse valiku tulemust, enne kui hüpatakse järgmisele lahendamata konfliktile.
Tühimärkide käsitlemine 2/3 faili ühendamisel:	Lahendab automaatselt kõik tühimärkide konfliktid määratud faili valides (vaikimisi käsitsivalik). Kasulik, kui tühimärgid pole olulise tähtsusega. Kui seda läheb ainult mõnikord vaja, kasuta parem ühendamismenüü käske "Vali A/B/C kõigi lahendamata tühimärgikonfliktide korral". Pane tähele, et kui sees on "Numbreid ignoreeritakse" või "C/C++ kommentaare ignoreeritakse", rakendub see automaatne valik ka kõigile numbrite või kommentaaride konfliktidele.
Automaatühendamise regulaaravaldis:	Regulaaravaldis ridadele, mille puhul KDiff3 peab automaatselt valima allika. Vt. ka Automaatne ühendamine...
Regulaaravaldisega automaatühendamine ühendamise alustamisel:	Valimise korral käivitab KDiff3 ühendamise alustamisel automaatse ühendamise, kasutades selleks "automaatühendamise regulaaravaldist".
Ajaloo alguse regulaaravaldis:	REgulaaravaldis ajalookirje alguse tuvastamiseks. Tavaliselt sisaldab see rida võtmesõna "$Log$". Vaikimisi: ".*\$Log.*\$.*"
Ajalookirje alguse regulaaravaldis:	Ühendamise ajaloo kirje koosneb mitmest reast. Siin saab koostada regulaaravaldise, mis tuvastab esimese rea (ilma alustavate kommentaarimärkideta). Sulgudega saab rühmitada võtmed, mida soovid kasutada sortimisel. Tühjaksjätmise korral eeldab KDiff3, et ajalookirjeid eraldavad tühjad read. Vaata ka Automaatne ühendamine...
Ajaloo ühendamise sortimine:	Versioonikontrolli ajaloo sortimise lubamine.
Ajalookirje alguse sortimisvõtmete järjekord:	Ajalookirje alguse tuvastamiseks kasutatavas regulaaravaldises võib tarvitada sulge, millega rühmitatakse sortimiseks pruugitavad võtmed. Võtmete järjekorra määramiseks (need kujutavad endast arve alates 1) kirjuta nad komaga eraldatult (nt. "4,5,6,1,2,3,7"). Kui see andmata jätta, ei sordita. Vaata ka Automaatne ühendamine...
Versioonikontrolli ajaloo ühendamine ühendamise alustamisel:	Sisselülitamisel käivitab KDiff3 ühendamise alustamisel eelnevalt määratud tingimustel automaatse ajaloo ühendamise.
Ajalookirjete maks. arv:	KDiff3 kärbib ajaloo, säilitades ainult määratud hulga kirjeid. Kärpimise vältimiseks määra väärtuseks -1. Vaikimisi: -1.
Regulaaravaldiste test	See nupp avab dialoogi, kus saab sisestatud regulaaravaldist testida ja parandada. Kopeeri lihtsalt vajalikud andmed oma failidest siia. "Sobivuse tulemused" näitavad kohe, kas avaldis sobib või mitte. "Sorteerimisvõtme tulemus" näitab ajaloo ühendamise sortimisel kasutatavat võtit.
Ebaolulise ühendamise käsk:	Siin saab määrata käsu, mis antakse siis, kui KDiff3 avastab kolme faili ühendamisel, et fail B ei sisalda mingeid olulisi andmeid, mida poleks juba failis C. Käsk kutsutakse välja kolmest failinimest parameetriga. Andmeid, mis sobivad "automaatse ühendamise regulaaravaldisega" või ajalooga, ei peeta oluliseks.

Kataloogide ühendamine
Need valikud käivad kataloogide uurimise ja nende ühendamise kohta, millest täpsemalt räägib osa Kataloogide võrdlemise ja ühendamise seletused.
Siiski on üks valik, mis käib ka üksikfailide salvestamise kohta:
Failidest tehakse varukoopia:	Kui faili salvestamisel on sellest olemas vanem versioon, antakse viimasele laiend ".orig". Kui peaks olemas olema ka samanimeline varasem fail laiendiga ".orig", siis see kustutatakse.

Riigi ja keele valikud
Keel:	Kasutajaliidese keele määramine. Selle muutmine ei mõjuta töötavat rakendust. Keele muutmiseks tuleb KDiff3 sulgeda ja uuesti käivitada. (See valik ei ole kasutatav KDiff3 KDE versioonis, sest seal saab keele määrata KDE üldises seadistuses.)
Kõikjal kasutatakse kodeeringut:	Järgnevaid kodeeringuvalikuid saab määrata eraldi, välja arvatud juhul, kui äsjatoodud valik on sisse lülitatud, sest siis võtavad kõik valikud esimese valiku väärtuse.
Kohalik kodeering:	Kodeeringu valimise väljade kohal seisab märge, mis annab teada kohaliku kodeeringu (see ei ole muudetav, vaid lihtsalt teadmiseks, kui sa ei peaks oma kodeeringut teadma).
A/B/C kodeering:	Sisendfailide kodeeringu kohandamine. See mõjutab inglise tähestikku mittekuuluvate sümbolite esitamist. Kohandada saab iga kodeeringut eraldi, nii et sul on isegi võimalus võrrelda ja ühendada faile, mis on salvestatud erinevas kodeeringus.
Kodeering ühendamisväljundil ja salvestamisel:	Kui muudad faili, saad siis määrata, millises kodeeringus salvestatakse see kettale.
Eelprotsessori failide kodeering:	Kui oled määranud eelprotsessorid, võib juhtuda, et nad ei suuda sinu kodeeringut töödelda (kui näiteks sinu failid on 16-bitises Unicode''is, eelprotsessor suudab aga töödelda vaid 8-bitist ASCII-d). Siin saad määrata eelprotsessori väljundi kodeeringu.
Paremalt vasakule keeled:	Mõningaid keeli kirjutatakse paremalt vasakule. Selle valiku sisselülitamisel näitab KDiff3 võrdluse sisendakendes ja ühendamise väljundaknas teksti paremalt vasakule. Pane tähele, et kui käivitad KDiff3 käsurealt võtmega "--reverse", kasutab kogu rakendus paremalt vasakule paigutust (seda võimaldab Qt). Käesolev käsiraamat on kirjutatud eeldusel, et "Paremalt vasakule keeled" ega võti "reverse" ei ole kasutusel. Sestap tuleb nende kasutamisel mõningaid "vasakul" või "paremal" antud kirjeldusi lugeda lihtsalt selle teadmise valguses vastupidi.

Muud
(neid valikuid ja toiminguid saab kasutada menüü või nupuriba vahendusel)
Näita reanumbreid:	Võimalus valida, kas sisendfailidel näidatakse ridade numbreid.
Näita erinevusi tühiku- ja tabeldusmärkides:	Vahel võivad nähtavad tühikud ja tabeldusmärgid tõsiselt häirida, millisel juhul on võimalik nende näitamine välja lülitada.
Näita tühimärke:	Selle väljalülitamisel ei tõsteta esile tühimärkide erinevusi tekstis ega ülevaatetulbal. Pane tähele, et et kui sees on "Numbreid ignoreeritakse" või "C/C++ kommentaare ignoreeritakse", rakendub see ka kõigile numbrite või kommentaaride konfliktidele.
Ülevaate valikud:	Neid valikuid saab kasutada ainult kolme faili võrdlemisel. Tavarežiimis näidatakse erinevusi ühel värvilisel ülevaatetulbal. Kuid vahel võivad huvi pakkuda kolmest faili ainult kahe erinevused. Valides vastavalt ülevaate "A vs. B", "A vs. C" või "B vs. C", näidatakse tavalise ülevaatetulba kõrval teist vajaliku infoga.
Reamurdmine võrdlusakendes:	Read murtakse, kui nende pikkus ületab akna laiust.
Näita akent A/B/C:	Vahel võib tekkida tahtmine ekraanil ruumi juurde tekitada, et näha paremini näiteks pikki ridu. Sellisel juhul saab peita aknad, mis ei ole hetkel olulised (menüü Aken).
Lülita poolitamissuund:	Lülitab võrdlusakende asetsemist üksteise kõrval (A vasakul pool B ja B vasakul pool C) ning üksteise kohal (A B kohal ja B C kohal). Ka see võib olla abiks pikkade ridade korral (menüü Aken).
Kiirühendamine:	Mõnikord võib leida erinevuste vaatamisel, et käes on aeg tegelda ühendamisega. "Ühenda praegune fail" menüüs Kataloog toimib ka siis, kui sa võrdled ainult kaht faili. Ühekordne klõps käivitab ühendamise ning kasutab vaikimisi väljundifaili nimena viimase sisendfaili nime (kui seda on kasutatud ühendamise taaskäivitamiseks, väljundfaili nimi säilitatakse).

Kiirklahvide seadistamine
Praegu toetab ainult KDE versioon kasutaja võimalust määrata kiirklahve (menüükäsk Seadistused -> Kiirklahvide seadistamine...)

Eeltöötluse käsud:
KDiff3 toetab kaht eeltöötluse võimalust.
Eeltöötluse käsk:	Mis tahes faili lugemisel filtreeritakse see läbi siin määratud käsu. Algse faili asemel näeb siis antud käsu väljundit. Sul on võimalik panna kirja oma eeltöötluse käsk, mis rahuldaks just sinu vajadused. Kasuta seda võimalust näiteks faili ülearuste osade kõrvaldamiseks või taande automaatseks korrigeerimiseks vms.
Ridade sobivuse eeltöötluse käsk:	Mis tahes faili lugemisel filtreeritakse see läbi siin määratud käsu. Kui määratud on ka eeltöötluse käsk (vaata eespool), on eeltöötluse käsu väljund ridade sobivuse eeltöötluse käsu sisendiks. Viimase väljundit kasutatakse ainult analüüsi esimeses, reasobivuse faasis. Sul on võimalik panna kirja oma eeltöötluse käsk, mis rahuldaks just sinu vajadused. Igal sisendi real peab olema talle vastav väljundi rida.
Selle mõte on pakkuda kasutajale suuremat paindlikkust võrdlemistulemuse seadistamisel. Kuid see nõuab välist programmi ja mõistagi ei taha enamik sellist ise kirjutama hakata. Õnneks suudab enamasti selliste asjadega toime tulla sed või perl.
Näide: lihtne testnäide: Võtame faili a.txt (6 rida):

      aa
      ba
      ca
      da
      ea
      fa

Ja faili b.txt (3 rida):

      cg
      dg
      eg

Ilma eeltöötluseta seatakse vastavusse järgmised read:

      aa - cg
      ba - dg
      ca - eg
      da
      ea
      fa

Tõenäoliselt ei ole see sugugi see, mida sa soovisid, sest oluliseks infokandjaks on just esimesed tähed. Et sobivusalgoritn jätaks arvesse võtmata teise tähe, kasutame reasobivuse eeltöötluse käsku, mis asendab 'g' 'a'-ga:

   sed 's/g/a/'

Selle käsu korral on võrdlemise tulemus järgmine:

      aa
      ba
      ca - cg
      da - dg
      ea - eg
      fa

Seesmisel näeb sobivusalgoritm faile juba pärast reasobivuse eeltöötluse rakendamist, kuid ekraanil jääb fail muutmata. (Tavaline eeltöötlus muudaks andmeid ka ekraanil.)

sed'i põhitõed
Selles osas tutvustame ainult programmi sed üksikuid põhimõttelisi omadusi. Rohkem infot leiab käsuga info:/sed või aadressilt http://www.gnu.org/software/sed/manual/html_mono/sed.html. Windowsi eelkompileeritud versioon asub aadressil http://unxutils.sourceforge.net. Pane tähele, et järgmistes näidetes eeldame, et käsk sed asub mõnes keskkonnamuutujaga PATH määratud kataloogis. Kui see nii ei ole, tuleb sul määrata käsu täielik asukoht.
Pane tähele ka seda, et järgnevates näidetes on kasutatud ühekordset jutumärki ('), mis Windowsis ei toimi - seal tuleb kasutada topeltjutumärke (").
Antud kontekstis kasutatakse ainult sed'i 'asenduskäsku:

   sed 's/REGULAARAVALDIS/ASENDUS/LIPUD'

Enne uue käsu kasutamist KDiff3-ga võiks seda esmalt testida konsoolil. Siin tuleb kasuks käsk echo. Näide:

   echo abrakadabra | sed 's/a/o/'
   -> obrakadabra

Toodud näites on tegemist äärmiselt lihtsa sed-käsuga, kus asendatakse esimene "a" "o"-ga. Kui soovid asendada kõik esinemiskorrad, tuleb kasutada lippu "g":

   echo abrakadabra | sed 's/a/o/g'
   -> obrokodobro

Sümbol "|" on torukäsk, mis edastab eelmise käsu väljundi järgmise käsu sisendile. Kui soovid testida pikema failiga, võid kasutada käsku cat, kui tegemist on UNIX-i süsteemiga, või type, kui tegu on Windowsiga. sed sooritab asenduse igal real.

cat failinimi | sed võtmed

Näited sed'i kasutamise kohta KDiff3-ga

Muud tüüpi kommentaaride ignoreerimine
Praegu mõistab KDiff3 ainult C/C++ kommentaare. Reasobivuse eeltöötluse käsuga saab aga ignoreerida ka muud tüüpi kommentaare, teisendades need C/C++ kommentaarideks. Näide: kui soovid ignoreerida kommentaare, mille alguses on "#", tuleks need teisendada nii, et alguses oleks "//". Pane tähele, et seejuureks peaks olema võimalus "C/C++ kommentaare ignoreeritakse" sisse lülitatud, muidu pole asjal mõtet. Vastav reasobivuse eeltöötluse käsk näeb välja selline:

   sed 's/#/\/\//'

Kuna sed omistab sümbolile "/" eritähenduse, on oluline asetada asendusstringis iga "/" ette sümbol "\". Mõnikord on "\" vajalik teatud ertähendusega sümbolite lisamiseks või eemaldamiseks. Nüüd on olulised üksikjutumärgid (') enne ja pärast asenduskäsku, sest vastasel juhul püüab shell mõningaid erisümboleid, näiteks '#', '$' või '\' tõlgendada juba enne nende edastamist käsule sed. Pane tähele, et Windowsis tuleb anda topeltjutumärgid ("). Windows asendab ka muid sümboleid, näiteks '%', nii et siin võib olla vajalik veidi eksperimenteerida.

Tõstutundetu võrdlus
Järgmise reasobivuse eeltöötluse käsuga saab kogu sisendi muuta suurtäheliseks:

   sed 's/\(.*\)/\U\1/'

Siin on ".*" regulaaravaldis, mis sobib iga stringiga, antud kontekstis siis iga real asuva sümboliga. "\1" asendusstringis tähistab sobivat teksti esimeses "\(" and "\)" paaris. "\U" teisendab sisestatud teksti suurtäheliseks.

Versioonikontrolli võtmesõnade ignoreerimine
CVS ja muud versioonikontrollisüsteemid kasutavad mitmeid võtmesõnu automaatselt genereeritavate stringide lisamiseks (info:/cvs/Keyword substitution). Kõik need järgivad mustrit "$VÕTMESÕNA genereeritud tekst$". Nüüd läheb meil vaja reasobivuse eeltöötluse käsku, mis eemaldaks ainult genereeritud teksti:

   sed 's/\$\(Revision\|Author\|Log\|Header\|Date\).*\$/\$\1\$/'

Võimalikke võtmesõnu eraldab "\|". Seda loendit võid mõistagi vastavalt oma vajadustele muuta. Enne "$" on kindlasti vajalik "\", sest muidu on "$" sobivuseks rea lõpp.
Kui katsetad sed'iga, hakkad arvatavasti veidi aduma regulaaravaldiste mõtet ja võib-olla isegi neid armastama. Iseenesest on regulaaravaldised väga kasulikud, sest päris paljud programmid toetavad sarnast võimalust.

Numbrite ignoreerimine
Numbrite ignoreerimine on tegelikult juba sisseehitatud võimalus. Kuid näitame siinkohal, kuidas see näeks välja reasobivuse eeltöötluse käsuna:

   sed 's/[0123456789.-]//g'

Sobivad kõik sümbolid '[' ja ']' vahel ning neid ei asendatagi, vaid lihtsalt kõrvaldatakse.

Teatud veergude ignoreerimine
Tekst võib olla rangelt vormindatud ning sisaldada näiteks veergu, mida soovid alati ignoreerida, samas aga muid veerge analüüsiks kasutada. Järgnevas näites ignoreeritakse viit esimest veergu (sümbolit), järgmised kümme säilitatakse, siis ignoreeritakse taas viit veergu ning ülejäänud rida säilitatakse.

   sed 's/.....\(..........\).....\(.*\)/\1\2/'

Iga punkt '.' vastab ühele sümbolile. "\1" ja "\2" asendusstringis tähistavad sobivat teksti esimeses ja teises "\(" ja "\)" paaris, märkides säilitatavat teksti.

Mitme asenduse kombineerimine
Vahel võib tekkida tahtmine teha mitu asendust korraga. Selleks tuleb nende eraldamiseks kasutada semikoolonit ';'. Näide:

echo abrakadabra | sed 's/a/o/g;s/\(.*\)/\U\1/'
   -> OBROKODOBRO

perli kasutamine sed'i asemel
sed'i asemel võib kasutada ka midagi muud, näiteks perl.

   perl -p -e 's/REGULAARAVALDIS/ASENDUS/LIPUD'

Kuid perl on mõnevõrra erinev. Pane tähele, et kui sed-ile oli vaja "\(" ja "\)", siis perl-ile on vaja lihtsalt "(" ja ")" ilma eelneva '\'. Näide:

sed 's/\(.*\)/\U\1/'
   perl -p -e 's/(.*)/\U\1/'

Eeltöötluse sooritamise järjekord
Andmed suunatakse läbi sisemiste ja väliste eeltöötluse käskude järgmises järjekorras
Tavaline eeltöötlus,
Reasobivuse eeltöötlus,
Tõstu ignoreerimine (teisendamine suurtäheliseks),
C/C++ kommentaaride tuvastamine,
Numbrite ignoreerimine,
Tühimärkide ignoreerimine
Tavalise eeltöötluse tulemusandmed säilitatakse näitamiseks ja ühendamiseks. Muud operatsioonid muudavad ainult andmeid, mida näeb reasobivuse võrdlusalgoritm.
Neil harvadel juhtudel, kui kasutad tavalist eeltöötluse käsku, arvesta, et reasobivuse eeltöötluse käsk peab tavalise eeltöötluse käsu väljundit oma sisendiks.

Hoiatus
Eeltöötluse käsud on sageli vägagi kasulikud, aga nagu ikka võimalustega, mis muudavad sinu teksti või peidavad automaatselt teatud erinevused, võib sel moel kogemata mõningad erinevused kahe silma vahele jätta või eriti halval juhul isegi olulised andmed hävitada.
Seetõttu teatab KDiff3 ühendamisel sellest, et kasutatakse tavalist eeltöötluse käsku, ning pärib, kas seda lubada või mitte. Kuid sind ei hoiatata, kas reasobivuse eeltöötluse on aktiivne või mitte. Ühendamine on valmis alles siis, kui kõik konfliktid on lahendatud. Kui lülitad välja võimaluse "Tühimärkide näitamine", siis on nähtamatud ka erinevused, mis eemaldati reasobivuse eeltöötluse käsuga. Kui ühendamisel ei saa kasutada nuppu 'Salvesta' (sest failis on veel konflikte), lülita "tühimärkide näitamine" sisse. Kui sa ei soovi neid enamasti vähese tähtsusega erinevusi käsitsi ühendada, vali ühendamismenüüst käsk "Vali [A|B|C] kõigi lahendamata tühimärgikonfliktide korral".