Provided by: manpages-hu_20010119-5_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:

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