tr
er et kommando-linje værktøj i Linux-og Unix-systemer, der oversætter, sletter, og presser tegn fra standard input og skriver resultatet til standard output.
tr
kommandoen kan udføre operationer som at fjerne gentagne tegn, konvertere store bogstaver til små bogstaver og grundlæggende tegn udskiftning og fjernelse. Typisk bruges den i kombination med andre kommandoer gennem rør.,
i denne vejledning viser vi dig, hvordan du bruger kommandoen tr
gennem praktiske eksempler og detaljerede forklaringer på de mest almindelige indstillinger.
Hvordan man Bruger tr-Kommando #
syntaks for tr
kommandoen er som følger:
tr OPTION... SET1
tr
accepterer to sæt af tegn, som regel med den samme længde, og erstatter tegn i første sæt med de tilsvarende figurer fra det andet sæt.,
A SET
er dybest set en streng af tegn, herunder de særlige backslash-undslap tegn.
I det følgende eksempel: tr
vil erstatte alle tegn fra standard input (linuxize), med en kortlægning af de figurer fra det første sæt med matchende dem fra det andet sæt.,
echo 'linuxize' | tr 'lin' 'red'
Hver forekomst af l
erstattes med r
i
med e
og n
med d
:
reduxeze
tegnsæt kan også være defineret ved hjælp af karakter varierer., For eksempel, i stedet for at skrive:
echo 'linuxize' | tr 'lmno' 'wxyz'
du kan bruge:
echo 'linuxize' | tr 'l-n' 'w-z'
Når -c
(--complement
) indstilling bruges, tr
erstatter alle tegn, der ikke er i SET1.
I eksemplet nedenfor, at alle tegn bortset fra “li” vil blive erstattet med det sidste tegn fra det andet sæt:
echo 'linuxize' | tr -c 'li' 'xy'
liyyyiyyy
Som du måske har bemærket, er outputtet ovenfor, har en mere synlig karakter end input., Dette skyldes, at kommandoen echo
udskriver et usynligt ne .line-tegn \n
, der også erstattes med y
. For at ekko en streng uden en ny linje skal du bruge indstillingen -n
.
-d
(--delete
) indstilling fortæller tr
for at slette tegn, der er specificeret i SET1. Når du sletter tegn uden at klemme, skal du kun angive et sæt.,
kommandoen nedenfor vil fjerne l
i
og z
tegn:
echo 'Linuxize' | tr -d 'liz'
L
karakter er ikke slettet, fordi de input omfatter et stort L
under l
tegn i SÆTTET er små bogstaver.
Lnuxe
-s
(--squeeze-repeats
) indstilling erstatter en sekvens af gentagne forekomster med det tegnsæt, der er i det sidste SÆT.,
I det følgende eksempel: tr
fjerner den gentagne mellemrum:
echo "GNU \ Linux" | tr -s ' '
GNU \ Linux
Når SET2 bruges sekvensen af tegnet, der er specificeret i SET1 er erstattet med SET2.
echo "GNU \ Linux" | tr -s ' ' '_'
GNU_\_Linux
-t
(--truncate-set1
) mulighed styrker tr
for at truncate SET1 til længden af SET2 før du laver den videre behandling.,
Som standard, hvis SET1 er større end SET2 tr
vil genbruge det sidste tegn af SET2. Her er et eksempel:
echo 'Linux ize' | tr 'abcde' '12'
output viser, at tegnet e
fra SET1 er matchet med den nyeste karakter af SET2, som er 2
:
Linux iz2
Nu, brug den samme kommando med -t
funktion:
echo 'Linux ize' | tr -t 'abcde' '12'
Linux ize
Du kan se, at de sidste tre tegn i SET1 er fjernet., SET1 bliver ‘ab’, samme længde som SET2, og der foretages ingen udskiftning.
kombination af indstillinger #
tr
kommando giver dig også mulighed for at kombinere dens indstillinger. For eksempel følgende kommando for første erstatter alle tegn undtagen i
med 0
og så presser de gentagne 0
tegn:
echo 'Linux ize' | tr -cs 'i' '0'
0i0i0
Tr Kommando Eksempler #
I dette afsnit, vil vi dække et par eksempler på almindelige anvendelser af tr
kommandoen.,
Konverter små bogstaver til store bogstaver #
Konvertering små bogstaver til store bogstaver, eller omvendt, er en af de typiske bruger tilfælde af tr
kommandoen. passer til alle små bogstaver og
matcher alle store bogstaver.
echo 'Linuxize' | tr '' ''
LINUXIZE
i Stedet for tegn-klasser, kan du også bruge intervaller:
echo 'Linuxize' | tr 'a-z' 'A-Z'
for At konvertere til store bogstaver til små bogstaver, skal du blot skifte de steder i sæt.,
Fjern alle ikke-numeriske tegn #
følgende kommando fjerner alle ikke-numeriske tegn:
echo "my phone is 123-456-7890" | tr -cd
står for alle ciffer tegn, og ved at bruge
-c
indstilling, kommando fjerner alle ikke-ciffer tegn.,vil se ud som dette:
1234567890
Sat hvert ord i en ny linje #
At sætte alle ord i en ny linje, vi er nødt til at matche alle ikke-alfanumeriske tegn og erstatte dem med en ny linje:
echo 'GNU is an operating system' | tr -cs '' '\n'
GNUisanoperatingsystem
Fjerne tomme linjer #
for At slette tomme linjer simpelthen klem gentagne newline-tegn:
tr -s '\n' < file.txt > new_file.txt
I kommandoen over at vi bruger omdirigering symbol <
til at videregive indholdet af file.txt
til tr
kommandoen., Omdirigeringen >
skriver output fra kommandoen tilnew_file.txt
.
Print $PATH mapper på en separat linje #
$PATH
miljø-variabel er et kolon-adskilt liste over mapper, der fortæller shell, hvilke mapper for at søge i efter eksekverbare filer, når du skriver en kommando.,
for At udskrive hver mappe på en separat linje, vi er nødt til at matche kolon (:
) og erstatte det med den nye linje:
echo $PATH | tr ':' '\n'
/usr/local/sbin/usr/local/bin/usr/sbin/usr/bin/sbin/bin
Konklusion #
tr
er en kommando til at oversætte eller sletning af tegn.
selvom det er meget nyttigt, tr
kan kun fungere med enkelte tegn. For mere kompleks mønstertilpasning og strengmanipulation skal du bruge sed
eller awk
.