Provided by: manpages-hu_20010119-6_all bug

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
              · tömöríti az ismétlődő karaktereket
              · karaktereket töröl
              · 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:

       · 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*]'

       · Az összes ismétlődő újsor karaktert egyetlenné vonja össze:

              tr -s '\n'

       · 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>