tr
er en kommando-linje-verktøyet i Linux-og Unix-systemer som oversetter, sletter, og klemmer tegn fra standard input og skriver resultatet til standard utdata.
tr
– kommandoen, kan du utføre operasjoner som å fjerne gjentatte tegn, konvertere store til små bokstaver, og grunnleggende karakter montere og fjerne. Vanligvis, det brukes i kombinasjon med andre kommandoer gjennom rør.,
I denne opplæringen vil vi vise deg hvordan du bruker tr
kommando gjennom praktiske eksempler og detaljerte forklaringer av de vanligste alternativene.
Hvordan å Bruke Kommandoen tr #
syntaks for tr
– kommandoen er som følger:
tr OPTION... SET1
tr
aksepterer to sett av tegn, vanligvis med samme lengde, og erstatter tegn i første sett med tilsvarende tegn fra det andre settet.,
En SET
er i utgangspunktet en streng av tegn, inkludert den spesielle omvendt skråstrek-rømt tegn.
I følgende eksempel tr
vil erstatte alle tegn fra standard input (linuxize), ved å kartlegge tegn fra det første settet med matchende seg fra det andre settet.,
echo 'linuxize' | tr 'lin' 'red'
Hver forekomst av l
er byttet ut med r
, i
med e
, og n
med d
:
reduxeze
tegnsett kan også være definert ved hjelp av tegn områder., For eksempel, i stedet for å skrive:
echo 'linuxize' | tr 'lmno' 'wxyz'
du kan bruke:
echo 'linuxize' | tr 'l-n' 'w-z'
Ved -c
(--complement
) alternativet er brukt, tr
erstatter alle tegn som ikke er i SET1.
I eksemplet nedenfor er alle tegn, bortsett fra «li» vil bli erstattet med den siste tegn fra det andre settet:
echo 'linuxize' | tr -c 'li' 'xy'
liyyyiyyy
Som du kanskje har lagt merke til den utgang ovenfor har en mer synlig karakter enn input., Dette er fordi echo
– kommandoen skriver ut en usynlig newline tegnet \n
det er også erstattet med y
. Til echo dette er en streng uten en ny linje, kan du bruke -n
alternativ.
-d
(--delete
) alternativ forteller tr
for å slette tegn som er angitt i SET1. Når du sletter tegn uten å klemme, bare angi ett sett.,
– kommandoen nedenfor vil fjerne l
, i
og z
tegn:
echo 'Linuxize' | tr -d 'liz'
L
– tegnet er ikke slettet fordi inngang inkluderer en stor L
mens l
karakter i SETTET er små.
Lnuxe
-s
(--squeeze-repeats
) alternativet erstatter en sekvens av gjentatte forekomster med tegnsett i siste SETT.,
I følgende eksempel tr
fjerner gjentatte mellomrom:
echo "GNU \ Linux" | tr -s ' '
GNU \ Linux
Når SET2 er brukt sekvens av tegn som er angitt i SET1 er erstattet med SET2.
echo "GNU \ Linux" | tr -s ' ' '_'
GNU_\_Linux
-t
(--truncate-set1
) alternativ styrker tr
for å avkorte SET1 til lengden av SET2 før du gjør videre behandling.,
som standard, hvis SET1 er større enn SET2 tr
vil du bruke den siste tegnet av SET2. Her er et eksempel:
echo 'Linux ize' | tr 'abcde' '12'
output viser at karakteren e
fra SET1 er matchet med den nyeste karakter av SET2, som er 2
:
Linux iz2
Nå, bruk den samme kommandoen med -t
valg:
echo 'Linux ize' | tr -t 'abcde' '12'
Linux ize
Du kan se at de tre siste tegnene i SET1 er fjernet., SET1 blir ‘ab’, samme lengde som SET2, og ingen erstatning er gjort.
Kombinerer alternativer #
tr
– kommandoen gir deg også muligheten til å kombinere sine valg. For eksempel, følgende kommando første erstatter alle tegn, bortsett fra i
med 0
og deretter klemmer gjentatte 0
tegn:
echo 'Linux ize' | tr -cs 'i' '0'
0i0i0
Tr Kommando Eksempler #
I denne delen, vil vi dekke noen eksempler på felles bruk av tr
– kommandoen.,
Konverterer små bokstaver til store bokstaver #
Konverterer små bokstaver til store bokstaver eller omvendt er en av de typiske tilfeller av tr
– kommandoen. samsvarer med alle små bokstaver og
samsvarer med store bokstaver.
echo 'Linuxize' | tr '' ''
LINUXIZE
i Stedet for karakter klasser, kan du også bruke områder:
echo 'Linuxize' | tr 'a-z' 'A-Z'
for Å konvertere store bokstaver til små bokstaver, bare slå steder av settene.,
Fjerne alle ikke-numeriske tegn #
Den følgende kommandoen fjerner alle ikke-numeriske tegn:
echo "my phone is 123-456-7890" | tr -cd
står for alle siffer tegn, og ved å bruke
-c
alternativ, kommandoen fjerner alle ikke-sifret tegn.,vil se ut som dette:
1234567890
Sette hvert ord i en ny linje #
for Å sette hvert ord i en ny linje, vi trenger å matche alle ikke-alfanumeriske tegn og erstatte dem med en ny linje:
echo 'GNU is an operating system' | tr -cs '' '\n'
GNUisanoperatingsystem
Fjern tomme linjer #
for Å slette tomme linjer bare presse repeterende linjeskifttegn:
tr -s '\n' < file.txt > new_file.txt
I kommandoen ovenfor, hvor vi ved hjelp av omdirigering symbol <
for å passere innholdet av file.txt
til tr
– kommandoen., Omadressering >
skriver resultatet av kommandoen til new_file.txt
.
skriv Ut $PATH kataloger på en egen linje #
$PATH
miljø-variabelen er et kolon-separert liste av kataloger som forteller shell hvilke kataloger for å søke etter kjørbare filer når du skriver inn en kommando.,
for Å skrive ut hver katalog på en egen linje, vi trenger å matche kolon (:
) og erstatte den med den nye linje:
echo $PATH | tr ':' '\n'
/usr/local/sbin/usr/local/bin/usr/sbin/usr/bin/sbin/bin
Konklusjon #
tr
er en kommando for å oversette eller slette tegn.
Selv om det er meget nyttig, tr
kan jobbe bare med et enkelt tegn. For mer komplekse mønster og matchende string manipulasjon, bør du bruke sed
eller awk
.