Linux repositories inspector
GNU textutils 2.0
15 August 1999

manpages-hu

Hungarian manpages

coreutils

The basic file, shell and text manipulation utilities of the GNU operating system

coreutils-common

coreutils common optional components

coreutils-doc

Documentation for the GNU Core Utilities

NÉV

tr - karakterek lecserélése, tömörítése és/vagy törlése

ÁTTEKINTÉS

tr [-cdst] [--complement] [--delete] [--squeeze-repeats] [--truncate-set1] string1 [string2]
tr [--help] [--version]

LEÍRÁS

tr átmásolja a szabványos bemenetet a szabványos kimenetre végrehajtva egyet a következõ feladatok közül:
o cserél, és választhatóan tömöríti az eredményben az ismétlõdõ karaktereket
o tömöríti az ismétlõdõ karaktereket
o karaktereket töröl
o karaktereket töröl, majd tömöríti az eredményben az ismétlõdõ karaktereket.
A string1 és (ha megadott) a string2 argumentumok egy rendezett karakterhalmazt határoznak meg, melyre lejebb SET1 és SET2-ként hivatkozunk. Ezek a halmazok azok a karakterei a bemenetnek, melyeken a tr mûködni fog. A --complement (-c) opció kicseréli a SET1-et az õ komplementerével (az összes karakter, ami nincs a SET1-ben).

OPCIÓK

-c, --complement
Kicseréli a SET1-et az õ komplementerével (az összes karakter, ami nincs a SET1-ben).
-d, --delete
Törli a bejövõ karakterek közül azt, amelyik benne van a SET1-ben, nincs cserélés.
-s, --squeeze-repeats
Karaktersorozatot cserél ki egy karakterrel, miután elvégezte a cserélést vagy a törlést. Lecserél minden ismétlõdõ karaktersorozatot, ami benne van a SET1-ben, a karakter egyszeri elõfordulásával.
-t, --truncate-set1
Mielõtt belekezdene a cserélésbe, elõször megcsonkítja a SET1-et a SET2 méretére.
--help Használati útmutatót ír a szabványos kimenetre, majd kilép.
--version
A program verziójáról ír ki információt a szabványos kimenetre, majd kilép.

KARAKTERHALMAZOK RÉSZLETEZÉSE

A string1 és string2 argumentumok formátuma hasonlít a reguláris kifejezések formátumára; habár nem reguláris kifejezések, csak karakterlisták. A legtöbb karakter saját magát jelöli ezekben a füzérekben, de a füzér tartalmazhat lejebb felsorolt rövidítéseket a kényelem kedvéért. Néhány ezek közül csak a string1-ben vagy a string2-ben használható, lásd lejebb.

Backslash szekvenciák

Backslash után egy az alábbiakban fel nem sorolt karaktert írva hibaüzenetet kapunk.
\a Control-G.
\b Control-H.
\f Control-L.
\n Control-J.
\r Control-M.
\t Control-I.
\v Control-K.
\OOO Az OOO értékû karakter, ahol az OOO legfeljebb 3 oktális számjegy.
\\ Egy backslash.

Tartományok

A ‘m-n’ jelölés feloldása az m-tõl az n-ig terjedõ összes karakter növekvõ sorrendben. m-nek n elõtt kell elhelyezkednie, különben hibát eredményez. Például a ‘0-9’ megfelel a ‘0123456789’-nak. Habár a GNU tr nem támogatja a System V szintaxist, ami szögletes zárójeleket használ a tartományok közrefogására, a cserélés, ami ebben a formátumban lett megadva mûködni fog, amennyiben a zárójelek a string1-ben összhangban vannak a string2-ben lévõkkel.

Ismétlõdõ karakterek

A ‘[c*n]’ jelölés a string2-ben a c karakter n-szeri ismétlését jelenti. Így a ‘[y*6]’ megfelel a ‘yyyyyy’-nak. A ‘[c*]’ jelölés a string2-ben megfelel a c karakter annyiszoros másolatának, ahányra szükség van ahhoz, hogy a SET2 a SET1-gyel azonos hosszúságú legyen. Ha az n 0-val kezdõdik, akkor oktálisan értelmezi, egyébként decimálisan.

Karakter osztályok

A ‘[:class-name:]’ jelölés feloldása az összes class-name (elõre definiált) osztálybeli karakter. A kifejtett karaktereknek nincsen pontos sorrendje, kivéve az ‘upper’ és ‘lower’ osztályokat, melyek növekvõ sorrendben fejtõdnek ki. Amennyiben a --delete (-d) és --squeeze-repeats (-s) opciók mindegyikét megadta, bármelyik karakterosztály használható a string2-ben. Egyébként csak a ‘lower’ és ‘upper’ adható meg a string2-ben, és csak akkor, ha a megfelelõ karakterosztályokat (‘upper’ és ‘lower’, külön-külön) ugyanazon a relatív helyen adták meg a string1-ben. Ez kisbetû-nagybetû átalakítást hajt végre. Érvénytelen osztálynév hibát eredményez. Az alábbi osztálynevek léteznek:
alnum Betûk és számok.
alpha Betûk.
blank Vízszintes fehérszóközök.
cntrl Vezérlõ karakterek.
digit Számok.
graph Nyomtatható karakterek, a szóközt kivéve.
lower Kisbetûk.
print Nyomtatható karakterek, a szóközzel együtt.
punct Írásjelek.
space Vízszintes vagy függõleges fehérszóközök.
upper Nagybetûk.
xdigit Hexadecimális számok.

Ekvivalencia osztályok

A ‘[=c=]’ szintaxis feloldása az összes karakternek, ami egyenértékû a c karakterrel, nem meghatározott sorrendben. Az ekvivalencia osztály egy újkeletû talalmány, ami a nem angol ábécéket szándékozik támogatni. Viszont úgy látszik, hogy nincs irányadó módja annak, hogyan definiáljuk vagy határozzuk meg a tartalmukat. Emiatt nem megvalósított ez a GNU tr-ben; minden karakter ekvivalencia osztálya csak saját magából áll, ami jelenleg hasznavehetetlenné teszi ezt a lehetõséget.

CSERÉLÉS

A tr cserélést végez, ha a string1 és a string2 is megadásra került és a --delete (-d) opció nem lett megadva. A tr lecseréli a bemenetének összes karakterét, ami benne van a SET1-ben, a SET2 beli megfelelõ karakterre. A karakterek, melyek nem szerepelnek a SET1-ben változatlanul maradnak. Amennyiben egy karakter többször is elõfordul a SET1-ben és az összes megfelelõ karakter nem ugyanaz, akkor az utolsót veszi csak figyelembe. Például az alábbi két parancs azonos:
tr aaa xyz
tr a z
Egy gyakori alkalmazása a tr parancsnak a kisbetûk nagybetûvé alakítása. Ez megoldható több módon. Itt van közüllük három:
tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
tr a-z A-Z
tr ’[:lower:]’ ’[:upper:]’
Amikor a tr cserélést hajt végre, a SET1-nek és a SET2-nek azonos hosszúságúnak kell lennie. Ha a SET1 rövidebb a SET2-nél, a felesleges karaktereket a SET2 végérõl figyelmen kívül hagyja.
Másrészt, ha a SET1 hosszabb a SET2-nél, akkor nem lesz hordozható a kód; POSIX.2 szerint az eredmény nem meghatározott. Ebben az esetben a BSD tr kibõvíti a SET1-t a SET2 hosszára a SET2 utolsó karakterének megfelelõ számú ismétlésével. A System V tr levágja a SET1-et a SET1 hosszára.
Alapértelmezés szerint a GNU tr ezt az esetet a BSD tr-jéhez hasonlóan csinálja. Ha a --truncate-set1 (-t) opció megadásra került, a GNU tr a System V tr-jéhez hasonlóan csinálja. Ezt az opciót figyelmen kívül hagyja a cserélési eljáráson kívül.
A System V tr ebben az esetben megszakítja a relatív gyakori BSD stílust:
tr -cs A-Za-z0-9 ’\012’
mert ez csak a nulla bájtot fogja átalakítani (az elsõ tagját a SET1 komplementerének), ahelyett, hogy az összes nem alfanumerikus karaktert lecserélné újsor karakterre.

ISMÉTLÕDÉSEK ÖSSZEHÚZÁSA ÉS TÖRLÉS

Amennyiben csak a --delete (-d) opció került megadásra, a tr eltávolít minden karaktert, amely a SET1-ben szerepel.
Amennyiben csak a --squeeze-repeats (-s)opció került megadásra, a tr lecseréli az összes bemeneti, SET1-ben lévõ karaktersorozatot az egyszeri elõfordulásával.
Amennyiben a --delete és a --squeeze-repeats opció is megadásra került, a tr elõször elvégzi a törlést a SET1 felhasználásával, majd az összehúzást a maradék karaktereken a SET2 felhasználásával.
A --squeeze-repeats opció a cseréléssel együtt is használható, ezesetben a tr elõször végrehajtja a cserét, majd összevonja az ismétlõdõ karaktereket a SET2 felhasználásával.
Itt van néhány példa az különbözõ opciók variálásának bemutatására:
o Az összes nulla bájt eltávolítása:
tr -d ’\000’
o Az összes szó különbözõ sorokba bontása. Az összes nem alfanumerikus karaktert újsor karakterre cseréli, majd az ismétlõdõ újsor karaktereket összevonja egyetlenné:
tr -cs ’[a-zA-Z0-9]’ ’[\n*]’
o Az összes ismétlõdõ újsor karaktert egyetlenné vonja össze:
tr -s ’\n’
o A szavak dupla elõfordulásának megtalálása. Például az emberek gyakran írják a "the the" ismétlõdõ szavakat egy újsor karakterrel elválasztva. Az alábbi bourne shell script elõször átkonvertálja az írásjelek és a szóközök sorozatát egy újsor karakterré, amitõl minden "szó" külön sorba kerül. Ezután átírja az összes nagybetût kicsire, és végül elindítja a uniq(1) parancsot a -d opcióval, hogy csak az ismétlõdõ szavakat írja ki.
#!/bin/sh
cat "$@" \
| tr -s ’[:punct:][:blank:]’ ’\n’ \
| tr ’[:upper:]’ ’[:lower:]’ \
| uniq -d

POSIX KOMPATIBILITÁS

A POSIXLY_CORRECT környezeti változó beállításával kikapcsolhatunk számos figyelmeztetõ- és hibaüzenetet a szigorúbb POSIX.2 megfelelés érdekében. Az üzenetek normálisan a következõ körülmények között fordulnak elõ:
1. Amikor a --delete opciót megadtuk, de a --squeeze-repeats-t nem, és a string2-t is megadtuk, a GNU tr alapértelmezés szerint kiír egy használati üzenetet és kilép, mert a string2 nem kerül felhasználásra. A POSIX specifikáció szerint a string2-t figyelmen kívül kell hagyni ebben az esetben. Csendben figyelmen kívül hagyni egy argumentumot rossz ötlet.
2. Amikor egy félreérthetõ oktális kód kerül megadásra. Például a \400 egy \40 majd egy 0, mert a 400 oktális szám nem fér bele egy bájtba.
Fontos, hogy a GNU tr nem teljesen kompatibilis a BSD vagy a System V változattal. Például nincsen opció a [:alpha:], [=c=] és [c*10] POSIX értelmezések kikapcsolásához. A GNU tr a nulla karaktert sem törli automatikusan, ellentétben a tradícionális UNIX variánsokkal, amelyeknél nincs lehetõség a nulla bájt megvédésére.

MEGJEGYZÉS

Hibajelentéseket a címre küldd.
Ezt a kézikönyv lapot Ragnar Hojland Espinosa <> írta.

MAGYAR FORDÍTÁS

Nagy Ernõ <
⇧ Top