Provided by:
manpages-hu_20010119-5_all 
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 bug-textutils@gnu.org címre küldd.
Ezt a kézikönyv lapot Ragnar Hojland Espinosa <ragnar@macula.net> írta.
MAGYAR FORDÍTÁS
Nagy Ernő <ned@elte.hu>