komm - comm
| Eredeti szerző (k) | Lee E. McMahon |
|---|---|
| Fejlesztő (k) | AT&T Bell Laboratories , Richard Stallman , David MacKenzie |
| Első kiadás | 1973. november |
| Operációs rendszer | Unix , Unix-szerű , 9. terv , Inferno |
| Felület | Többplatformos |
| típus | Parancs |
| Engedély | coreutils : GPLv3+ |
A számítógépes operációs rendszerek Unix családjában található Comm parancs egy segédprogram, amely két fájl összehasonlítására szolgál a közös és a különálló sorokhoz. comm a POSIX szabványban van megadva . A nyolcvanas évek közepe és vége óta széles körben elérhető Unix-szerű operációs rendszereken.
Történelem
Lee E. McMahon írta , a comm először a Unix 4 -es verzióban jelent meg .
A GNU coreutils -ban csomagolt comm verzióját Richard Stallman és David MacKenzie írta .
Használat
A com két fájlt olvas be bemenetként, szövegsoroknak tekintve. comm egy fájlt ad ki, amely három oszlopot tartalmaz. Az első két oszlop az első és a második fájl egyedi sorait tartalmazza. Az utolsó oszlop mindkettőhöz hasonló sorokat tartalmaz. Ez funkcionálisan hasonló a diff .
Az oszlopokat általában a <tab> karakterrel különböztetjük meg. Ha a bemeneti fájlok elválasztó karakterrel kezdődő sorokat tartalmaznak, a kimeneti oszlopok kétértelművé válhatnak.
A hatékonyság, az alapértelmezésben a kommunikációs várják a bemeneti fájlok szekvenálni ugyanabban a sorban egybevetés érdekében, válogatni lexikailag. A sort (Unix) parancs használható erre a célra.
A komm algoritmus kihasználja az aktuális területi beállítások szortírozási sorrendjét . Ha a fájlok sorai nincsenek összegyűjtve az aktuális területi beállításoknak megfelelően, az eredmény nem definiált.
Visszatérési kód
A diff -tól eltérően a comm visszatérési kódjának nincs logikai jelentősége a két fájl kapcsolatát illetően. A 0 visszatérési kód a sikert jelzi, a> 0 visszatérési kód a feldolgozás során történt hibát.
Példa
$ cat foo
apple
banana
eggplant
$ cat bar
apple
banana
banana
zucchini
$ comm foo bar
apple
banana
banana
eggplant
zucchini
Ez azt mutatja, hogy mindkét fájlban van egy banán, de csak a bárban van egy második banán.
Részletesebben a kimeneti fájl az alábbi megjelenéssel rendelkezik. Ne feledje, hogy az oszlopot a vezető lapkarakterek száma értelmezi. \ t egy tabulátor karaktert és \ n egy új sort jelent ( Escape karakter#Programozás és adatformátumok ).
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \ t | \ t | a | o | o | l | e | \ n | ||
| 1 | \ t | \ t | b | a | n | a | n | a | \ n | |
| 2 | \ t | b | a | n | a | n | a | \ n | ||
| 3 | e | g | g | o | l | a | n | t | \ n | |
| 4 | \ t | z | u | c | c | h | én | n | én | \ n |
Összehasonlítás a diff
Általánosságban elmondható, hogy a diff erősebb segédprogram, mint a komm . Az egyszerűbb comm a legmegfelelőbb szkriptekben való használatra.
Az elsődleges különbség a comm és a diff között az, hogy a comm elveti a sorok rendezés előtti adatait.
Kisebb különbség a comm és a diff között az, hogy a comm nem próbálja jelezni, hogy egy sor "megváltozott" a két fájl között; sorok vagy az "1. fájlból", "a 2. fájlból" vagy a "mindkét" oszlopban láthatók. Ez akkor lehet hasznos, ha azt kívánja, hogy két sort különbözõnek tekintsenek, még akkor is, ha csak finom eltérések vannak.
Egyéb opciók
A Comm rendelkezik parancssori beállításokkal a három oszlop bármelyikének elnyomására. Ez hasznos a szkriptekhez.
Lehetőség van egy fájl (de nem mindkettő) szabványos bemenetről történő olvasására.
Korlátok
A sorok összehasonlítása során minden soros bemeneti fájlból legfeljebb egy teljes sort kell pufferelni, mielőtt a következő kimeneti sort írnánk.
Egyes implementációk a readlinebuffer () függvénnyel olvassák a sorokat, ami nem ír elő sorhossz -korlátot, ha a rendszermemória elegendő.
Más megvalósítások sorokat olvasnak az fgets () függvénnyel . Ez a funkció rögzített puffert igényel. Ezeknél a megvalósításoknál a puffert gyakran a LINE_MAX POSIX makró szerint méretezik .
Lásd még
- Fájl -összehasonlító eszközök összehasonlítása
- Unix parancsok listája
- cmp (Unix) - karakterorientált fájl -összehasonlítás
- cut (Unix) -oszloporientált fájlok felosztása
Hivatkozások
Külső linkek
- : két fájl közös sorainak kiválasztása vagy elutasítása - Commands & Utilities Reference, The Single UNIX Specification , Issue 7 from The Open Group
- - 9. terv Programozói kézikönyv, 1. kötet
- - Inferno General parancsok kézikönyv