tr
egy parancssori segédprogram Linux és Unix rendszerekben, amely lefordítja, törli, és összenyomja a karaktereket a szabványos bemenet, és írja az eredményt a szabványos kimenet.
a tr
parancs olyan műveleteket hajthat végre, mint az ismétlődő Karakterek eltávolítása, nagybetűk kisbetűs konvertálása, valamint az alapvető karakter cseréje és eltávolítása. Általában más parancsokkal együtt használják csöveken keresztül.,
ebben az oktatóanyagban megmutatjuk, hogyan kell használni a tr
parancsot gyakorlati példákon és a leggyakoribb lehetőségek részletes magyarázatain keresztül.
A tr parancs használata #
a tr
parancs szintaxisa a következő:
tr OPTION... SET1
tr
Elfogad két karakterkészletet, általában azonos hosszúságú, az első készletek karaktereit a második készlet megfelelő karaktereivel helyettesíti.,
a SET
alapvetően egy karakterlánc, beleértve a speciális backslash-szökött karaktereket.
a következő példában a tr
a standard bemenet összes karakterét (linuxize) helyettesíti, az első készlet karaktereit a második készlet megfelelőjeivel leképezve.,
echo 'linuxize' | tr 'lin' 'red'
a l
minden előfordulását r
, i
e
>, és n
d
:
reduxeze
a karakterkészletek karaktertartományok segítségével is meghatározhatók., Például az írás helyett:
echo 'linuxize' | tr 'lmno' 'wxyz'
használhatja:
echo 'linuxize' | tr 'l-n' 'w-z'
amikor -c
() opció használható, tr
minden olyan karaktert helyettesít, amely nincs a SET1-ben.
az alábbi példában a “li” kivételével az összes karakter helyébe a második készlet utolsó karaktere lép:
echo 'linuxize' | tr -c 'li' 'xy'
liyyyiyyy
amint észrevetted, a fenti kimenetnek egy láthatóbb karaktere van, mint a bemenet., Ennek oka az, hogy aecho
parancs egy láthatatlan newline karaktert nyomtat ki\n
, amelyet szintén helyettesíteneky
. Új sor nélküli karakterlánc visszhangozásához használja a -n
opciót.
a -d
(--delete
) opció azt mondja tr
a SET1-ben megadott karakterek törléséhez. Ha a karaktereket szorítás nélkül törli, csak egy készletet adjon meg.,
az alábbi parancs eltávolítja a l
, i
és z
karakterek:
echo 'Linuxize' | tr -d 'liz'
a L
karakter nem törlődik, mert a bemenet tartalmaz egy nagybetűs L
míg a l
karakter a készletben kisbetűs.
Lnuxe
The -s
(--squeeze-repeats
) opció helyettesíti az ismétlődő események sorozatát az utolsó készlet karakterkészletével.,
a következő példában atr
eltávolítja az ismétlődő szóköz karaktereket:
echo "GNU \ Linux" | tr -s ' '
GNU \ Linux
a SET2 használatakor a SET1-ben megadott karaktersorozat helyébe a SET2 lép.
echo "GNU \ Linux" | tr -s ' ' '_'
GNU_\_Linux
The -t
(--truncate-set1
) opciós erők tr
a további feldolgozás előtt a SET1-et a SET2 hosszára kell csökkenteni.,
alapértelmezés szerint, ha a SET1 nagyobb, mint a SET2 tr
újra felhasználja a SET2 utolsó karakterét. Itt egy példa:
echo 'Linux ize' | tr 'abcde' '12'
A kimenet jelzi, hogy a karakter e
a SET1 illeszkedik a legújabb karakter SET2, amely 2
:
Linux iz2
Most, használja ugyanazt a parancsot a -t
opció:
echo 'Linux ize' | tr -t 'abcde' '12'
Linux ize
látható, hogy az utolsó három karakter a SET1 eltávolítják., A SET1 ” ab ” lesz, ugyanolyan hosszú, mint a SET2, és nincs csere.
kombinálása opciók #
a tr
parancs is lehetővé teszi, hogy összekapcsolják a lehetőségeket. Például a következő parancs először az összes karaktert helyettesíti, kivéve a i
0
, majd összenyomja az ismételt 0
karaktereket:
echo 'Linux ize' | tr -cs 'i' '0'
0i0i0
TR parancs példák #
ebben a szakaszban néhány példát mutatunk be a tr
parancs közös felhasználására.,
konvertálja az alsó tokot felső esetre #
az alsó tok felső esetre vagy hátra történő konvertálása a tr
parancs egyik tipikus felhasználási esete. megegyezik az összes alsóbb case karakterrel és
az összes nagybetűs karakterrel.
echo 'Linuxize' | tr '' ''
LINUXIZE
karakterosztályok helyett tartományokat is használhat:
echo 'Linuxize' | tr 'a-z' 'A-Z'
a felső eset alsó esetre történő konvertálásához egyszerűen kapcsolja át a készletek helyét.,
távolítsa el az összes nem numerikus karaktert #
a következő parancs eltávolítja az összes nem numerikus karaktert:
echo "my phone is 123-456-7890" | tr -cd
minden számjegyű karakterre vonatkozik, és a
-c
opció használatával a parancs eltávolítja az összes nem számjegyet karakterek.,így fog kinézni:
1234567890
Tegye minden szó új sorba #
tenni minden szó új sorba kell, hogy megfeleljen minden nem alfanumerikus karaktereket, majd cserélje ki egy új sort:
echo 'GNU is an operating system' | tr -cs '' '\n'
GNUisanoperatingsystem
Távolítsa el az üres sorok #
töröl a üres sorok egyszerűen szorítani az ismétlődő újsor karaktereket:
tr -s '\n' < file.txt > new_file.txt
a fenti paranccsal végezzük az átirányítás szimbólum <
, hogy adja át a tartalmát a file.txt
, hogy a tr
parancs., Az átirányítás >
írja a parancs kimenetét new_file.txt
.
Print $PATH könyvtárak külön sorban #
A $PATH
környezeti változó egy kettőspontokkal elválasztott jegyzéklistát, hogy azt mondja a burok, ami a könyvtárak keresése futtatható fájlok, amikor írja be a parancsot.,
nyomtatás minden könyvtár külön sorban meg kell egyeznie a vastagbél (:
), majd cserélje ki egy új sort:
echo $PATH | tr ':' '\n'
/usr/local/sbin/usr/local/bin/usr/sbin/usr/bin/sbin/bin
Következtetés #
tr
parancs a fordítás, vagy a törlés karakter.
bár nagyon hasznos, tr
csak egyetlen karakterrel működhet. A bonyolultabb mintaillesztéshez és karakterlánc-manipulációhoz a sed
vagy awk
kell használni .