TR(1) TR(1)
tr - karakterek lecserlse, tmrtse s/vagy trlse
tr [-cdst] [--complement] [--delete] [--squeeze-repeats] [--truncate-
set1] string1 [string2]
tr [--help] [--version]
tr tmsolja a szabvnyos bemenetet a szabvnyos kimenetre vgrehajtva egyet
a kvetkez feladatok kzl:
+>o cserl, s vlaszthatan tmrti az eredmnyben az ismtld karak-
tereket
+>o tmrti az ismtld karaktereket
+>o karaktereket trl
+>o karaktereket trl, majd tmrti az eredmnyben az ismtld karak-
tereket.
A string1 s (ha megadott) a string2 argumentumok egy rendezett karak-
terhalmazt hatroznak meg, melyre lejebb SET1 s SET2-knt hivatkozunk.
Ezek a halmazok azok a karakterei a bemenetnek, melyeken a tr mkdni
fog. A --complement (-c) opci kicserli a SET1-et az komplementervel (az
sszes karakter, ami nincs a SET1-ben).
-c, --complement
Kicserli a SET1-et az komplementervel (az sszes karakter, ami
nincs a SET1-ben).
-d, --delete
Trli a bejv karakterek kzl azt, amelyik benne van a SET1-ben,
nincs cserls.
-s, --squeeze-repeats
Karaktersorozatot cserl ki egy karakterrel, miutn elvgezte a
cserlst vagy a trlst. Lecserl minden ismtld karaktersorozatot,
ami benne van a SET1-ben, a karakter egyszeri elfordulsval.
-t, --truncate-set1
Mieltt belekezdene a cserlsbe, elszr megcsonktja a SET1-et a
SET2 mretre.
--help Hasznlati tmutatt r a szabvnyos kimenetre, majd kilp.
--version
A program verzijrl r ki informcit a szabvnyos kimenetre, majd
kilp.
A string1 s string2 argumentumok formtuma hasonlt a regulris kifejezsek
formtumra; habr nem regulris kifejezsek, csak karakterlistk. A legtbb
karakter sajt magt jelli ezekben a fzrekben, de a fzr tartalmazhat
lejebb felsorolt rvidtseket a knyelem kedvrt. Nhny ezek kzl csak a
string1-ben vagy a string2-ben hasznlhat, lsd lejebb.
Backslash szekvencik
Backslash utn egy az albbiakban fel nem sorolt karaktert rva
hibazenetet 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 rtk karakter, ahol az OOO legfeljebb 3 oktlis szm-
jegy.
\\ Egy backslash.
Tartomnyok
A `m-n' jells feloldsa az m-tl az n-ig terjed sszes karakter nvekv sor-
rendben. m-nek n eltt kell elhelyezkednie, klnben hibt eredmnyez. Pldul
a `0-9' megfelel a `0123456789'-nak. Habr a GNU tr nem tmogatja a Sys-
tem V szintaxist, ami szgletes zrjeleket hasznl a tartomnyok kzre-
fogsra, a cserls, ami ebben a formtumban lett megadva mkdni fog, amen-
nyiben a zrjelek a string1-ben sszhangban vannak a string2-ben lvkkel.
Ismtld karakterek
A `[c*n]' jells a string2-ben a c karakter n-szeri ismtlst jelenti. gy
a `[y*6]' megfelel a `yyyyyy'-nak. A `[c*]' jells a string2-ben
megfelel a c karakter annyiszoros msolatnak, ahnyra szksg van ahhoz,
hogy a SET2 a SET1-gyel azonos hosszsg legyen. Ha az n 0-val kezddik,
akkor oktlisan rtelmezi, egybknt decimlisan.
Karakter osztlyok
A `[:class-name:]' jells feloldsa az sszes class-name (elre definilt)
osztlybeli karakter. A kifejtett karaktereknek nincsen pontos sor-
rendje, kivve az `upper' s `lower' osztlyokat, melyek nvekv sorrendben
fejtdnek ki. Amennyiben a --delete (-d) s --squeeze-repeats (-s) opcik
mindegyikt megadta, brmelyik karakterosztly hasznlhat a string2-ben.
Egybknt csak a `lower' s `upper' adhat meg a string2-ben, s csak akkor,
ha a megfelel karakterosztlyokat (`upper' s `lower', kln-kln) ugyanazon
a relatv helyen adtk meg a string1-ben. Ez kisbet-nagybet talaktst hajt
vgre. rvnytelen osztlynv hibt eredmnyez. Az albbi osztlynevek lteznek:
alnum Betk s szmok.
alpha Betk.
blank Vzszintes fehrszkzk.
cntrl Vezrl karakterek.
digit Szmok.
graph Nyomtathat karakterek, a szkzt kivve.
lower Kisbetk.
print Nyomtathat karakterek, a szkzzel egytt.
punct rsjelek.
space Vzszintes vagy fggleges fehrszkzk.
upper Nagybetk.
xdigit Hexadecimlis szmok.
Ekvivalencia osztlyok
A `[=c=]' szintaxis feloldsa az sszes karakternek, ami egyenrtk a c
karakterrel, nem meghatrozott sorrendben. Az ekvivalencia osztly egy
jkelet talalmny, ami a nem angol bcket szndkozik tmogatni. Viszont gy
ltszik, hogy nincs irnyad mdja annak, hogyan definiljuk vagy hatrozzuk
meg a tartalmukat. Emiatt nem megvalstott ez a GNU tr-ben; minden
karakter ekvivalencia osztlya csak sajt magbl ll, ami jelenleg hasz-
navehetetlenn teszi ezt a lehetsget.
A tr cserlst vgez, ha a string1 s a string2 is megadsra kerlt s a
--delete (-d) opci nem lett megadva. A tr lecserli a bemenetnek sszes
karaktert, ami benne van a SET1-ben, a SET2 beli megfelel karakterre. A
karakterek, melyek nem szerepelnek a SET1-ben vltozatlanul maradnak.
Amennyiben egy karakter tbbszr is elfordul a SET1-ben s az sszes
megfelel karakter nem ugyanaz, akkor az utolst veszi csak figyelembe.
Pldul az albbi kt parancs azonos:
tr aaa xyz
tr a z
Egy gyakori alkalmazsa a tr parancsnak a kisbetk nagybetv alaktsa. Ez
megoldhat tbb mdon. Itt van kzllk hrom:
tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
tr a-z A-Z
tr '[:lower:]' '[:upper:]'
Amikor a tr cserlst hajt vgre, a SET1-nek s a SET2-nek azonos hosszsg-
nak kell lennie. Ha a SET1 rvidebb a SET2-nl, a felesleges karaktereket
a SET2 vgrl figyelmen kvl hagyja.
Msrszt, ha a SET1 hosszabb a SET2-nl, akkor nem lesz hordozhat a kd;
POSIX.2 szerint az eredmny nem meghatrozott. Ebben az esetben a BSD tr
kibvti a SET1-t a SET2 hosszra a SET2 utols karakternek megfelel szm
ismtlsvel. A System V tr levgja a SET1-et a SET1 hosszra.
Alaprtelmezs szerint a GNU tr ezt az esetet a BSD tr-jhez hasonlan
csinlja. Ha a --truncate-set1 (-t) opci megadsra kerlt, a GNU tr a Sys-
tem V tr-jhez hasonlan csinlja. Ezt az opcit figyelmen kvl hagyja a
cserlsi eljrson kvl.
A System V tr ebben az esetben megszaktja a relatv gyakori BSD stlust:
tr -cs A-Za-z0-9 '\012'
mert ez csak a nulla bjtot fogja talaktani (az els tagjt a SET1 komple-
menternek), ahelyett, hogy az sszes nem alfanumerikus karaktert lec-
serln jsor karakterre.
ISMTLDSEK SSZEHZSA S TRLS
Amennyiben csak a --delete (-d) opci kerlt megadsra, a tr eltvolt min-
den karaktert, amely a SET1-ben szerepel.
Amennyiben csak a --squeeze-repeats (-s)opci kerlt megadsra, a tr lec-
serli az sszes bemeneti, SET1-ben lv karaktersorozatot az egyszeri
elfordulsval.
Amennyiben a --delete s a --squeeze-repeats opci is megadsra kerlt, a
tr elszr elvgzi a trlst a SET1 felhasznlsval, majd az sszehzst a maradk
karaktereken a SET2 felhasznlsval.
A --squeeze-repeats opci a cserlssel egytt is hasznlhat, ezesetben a tr
elszr vgrehajtja a csert, majd sszevonja az ismtld karaktereket a SET2
felhasznlsval.
Itt van nhny plda az klnbz opcik varilsnak bemutatsra:
+>o Az sszes nulla bjt eltvoltsa:
tr -d '\000'
+>o Az sszes sz klnbz sorokba bontsa. Az sszes nem alfanumerikus karak-
tert jsor karakterre cserli, majd az ismtld jsor karaktereket sszevonja
egyetlenn:
tr -cs '[a-zA-Z0-9]' '[\n*]'
+>o Az sszes ismtld jsor karaktert egyetlenn vonja ssze:
tr -s '\n'
+>o A szavak dupla elfordulsnak megtallsa. Pldul az emberek gyakran rjk a
"the the" ismtld szavakat egy jsor karakterrel elvlasztva. Az albbi
bourne shell script elszr tkonvertlja az rsjelek s a szkzk sorozatt egy
jsor karakterr, amitl minden "sz" kln sorba kerl. Ezutn trja az sszes
nagybett kicsire, s vgl elindtja a uniq(1) parancsot a -d opcival, hogy
csak az ismtld szavakat rja ki.
#!/bin/sh
cat "$@" \
| tr -s '[:punct:][:blank:]' '\n' \
| tr '[:upper:]' '[:lower:]' \
| uniq -d
A POSIXLY_CORRECT krnyezeti vltoz belltsval kikapcsolhatunk szmos
figyelmeztet- s hibazenetet a szigorbb POSIX.2 megfelels rdekben. Az
zenetek normlisan a kvetkez krlmnyek kztt fordulnak el:
1. Amikor a --delete opcit megadtuk, de a --squeeze-repeats-t
nem, s a string2-t is megadtuk, a GNU tr alaprtelmezs szerint
kir egy hasznlati zenetet s kilp, mert a string2 nem kerl fel-
hasznlsra. A POSIX specifikci szerint a string2-t figyelmen kvl
kell hagyni ebben az esetben. Csendben figyelmen kvl hagyni egy
argumentumot rossz tlet.
2. Amikor egy flrerthet oktlis kd kerl megadsra. Pldul a \400
egy \40 majd egy 0, mert a 400 oktlis szm nem fr bele egy bjtba.
Fontos, hogy a GNU tr nem teljesen kompatibilis a BSD vagy a System V
vltozattal. Pldul nincsen opci a [:alpha:], [=c=] s [c*10] POSIX
rtelmezsek kikapcsolshoz. A GNU tr a nulla karaktert sem trli
automatikusan, ellenttben a tradcionlis UNIX varinsokkal, amelyeknl
nincs lehetsg a nulla bjt megvdsre.
Hibajelentseket a bug-textutils [AT] gnu.org cmre kldd.
Ezt a kziknyv lapot Ragnar Hojland Espinosa <ragnar [AT] macula.net> rta.
Nagy Ern <ned [AT] elte.hu>
GNU textutils 2.0 15 August 1999 TR(1)
cat dos.txt | tr -d ‘\015’ > unix.txt