comm

Linux.fista
Versio hetkellä 3. helmikuuta 2019 kello 22.11 – tehnyt Javali (keskustelu | muokkaukset) (typo-korjaus)
Siirry navigaatioon Siirry hakuun

comm on komentoriviohjelma, joka vertailee kahden parametrina annetun syötetiedoston sisältöä riveittäin. Sillä voidaan erotella kahden eri tiedoston sisältämät yhteiset rivit ja rivit, jotka esiintyvät vain toisessa kahdesta komennolle parametrina annetusta syötetiedostosta. Molempien syötetiedostojen rivit tulee olla aakkosjärjestysessä (ks. sort). Ilman valitsimia comm näyttää rivit kolmessa sarakkeessa. Ensimmäisessä sarakeessa on pelkästään ensimmäisessä syötetiedostossa esiintyvät rivit, toisessa sarakkeessa vain toisessa syötetiedostossa olevat rivit ja kolmannessa sarakkeessa yhteiset eli molemmissa syötetiedostoissa olevat rivit.

Esimerkkejä käytöstä

Kaksi ryhmää tarkkailee lintuja. Ryhmien havaitsemat lintulajit on lueteltu alla olevissa tiedostoissa.

$ cat ryhma1
varpunen
varis
harakka
$ cat ryhma2
tilhi
varis
harakka

Jotta ryhmien havaitsemia lintulajeja voidaan vertailla comm-ohjelmalla, tulee luetteloiden rivit ensin järjestää esimerkikisi sort-komennolla. Järjestetyt luettelot voidaan ohjata suoraan syötteeksi comm-ohjelmalle seuraavasti:

$ comm <(sort ryhma1) <(sort ryhma2) | expand
                harakka
        tilhi
                varis
varpunen

Selkeyden vuoksi tässä expand korvaa sarakkeiden tab-erotinmerkit 8 välilyönnillä. Valitsimilla -1, -2 ja -3 sarakkeita voi piilottaa. Esimerkiksi piilottamalla valitsimilla -1 ja -2 ensimmäinen ja toinen sarake saadaan tuloksena pelkästään molempien syötetiedostojen yhteiset rivit.

$ comm -12 <(sort tiedosto_1) <(sort tiedosto_2)
harakka
varis

Katso myös