Karakterkonverzió

A karakterkonverziós programok közül a leghasznosabb és legismertebb a tr (translate). Ez a parancs a standard bemenetről a standard kimenetre dolgozik, miközben az input egyes karaktereit kicseréli. A cseréhez két "táblázatot" használ, amelyeket string (karakterlánc) formában a parancs argumentumaiként kell megadni. A cserének az a stratégiája, hogyha a beolvasott szövegben talál egy olyan karaktert, amelyik a sorrendben elsőként megadott stringben található, akkor azt a második string azonos pozíciójú karakterével helyettesíti.

Az alábbi parancs minden a betűt x, b betűt y és c betűt z betűre cserél:

 

tr "abc" "xyz" < file1

Az alábbi parancs a vers1-ben szereplő szavakat írja ki úgy, hogy minden szó külön-külön sorba kerüljön:

 

$ tr -cs "[A-Z][a-z]" "[\012*]" <vers1

Elaludtak

a

fak

a

levelek

libegnek

az

almok

tudnak

varni

az

almok

nem

sietnek

$

A példa megértéséhez ismernünk kell a tr parancs két felhasznált opcióját. A -c opció hatására a cserére szánt karakterek helyett az ASCII karakterkészlet minden olyan karakterét értelmezi, amit nem soroltunk fel, és azokat cseréli ki a második karakterlánc megfelelő elemére. Tehát ebben az esetben mindent ami nem kis- vagy nagybetű, a példában szóköz és sorvége fordul elő, kicseréli a \012 karakterre, azaz a sorvégére. A -s opció hatására a csere miatt egymás mellé került több azonos karakter helyett csak egyet ír ki. Tehát ebben az esetben, a forrás szövegben lévő szóköz és sorvége páros miatt keletkező két sorvégéből csinál egyet. A cserére szánt karakterláncban a csillag karakter arra szolgál, hogy a megelőző karaktert, itt a sorvégét, pont annyi darabbá sokszorozza, ahány karakter a cserére szánt karakterláncban van, így a parancs minden kicserélendő karakterhez talál párt.

Még egyszer felhívjuk a figyelmet arra, hogy a tr a standard ki- és bemenetet használja, fájlparamétert nem fogad el.

 

Tartalomjegyzék