other sections
TR(1) | General Commands Manual | TR(1) |
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:- • cserél, és választhatóan
tömöríti az eredményben az
ismétlődő karaktereket
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.
- 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
tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ tr a-z A-Z tr '[:lower:]' '[:upper:]'
tr -cs A-Za-z0-9 '\012'
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: • Az összes nulla bájt eltávolítása:tr -d '\000'
• 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*]'
tr -s '\n'
#!/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.
MEGJEGYZÉS¶
Hibajelentéseket a bug-textutils@gnu.org címre küldd.MAGYAR FORDÍTÁS¶
Nagy Ernő <ned@elte.hu>15 August 1999 | GNU textutils 2.0 |