Android

Tr kommando i linux med eksempler

Linux Tutorials | tr command | GeeksforGeeks

Linux Tutorials | tr command | GeeksforGeeks

Innholdsfortegnelse:

Anonim

tr er et kommandolinjeverktøy i Linux og Unix-systemer som oversetter, sletter og klemmer tegn fra standardinngangen og skriver resultatet til standardutgangen.

tr kommandoen kan utføre operasjoner som å fjerne gjentatte tegn, konvertere store bokstaver til små bokstaver og grunnleggende tegn erstatte og fjerne. Vanligvis brukes det i kombinasjon med andre kommandoer gjennom rørføring.

I denne opplæringen vil vi vise deg hvordan du bruker tr kommandoen gjennom praktiske eksempler og detaljerte forklaringer på de vanligste alternativene.

Hvordan bruke tr kommandoen

Syntaks for tr kommandoen er som følger:

tr OPTION… SET1

tr godtar to sett med tegn, vanligvis med samme lengde, og erstatter tegnene til de første settene med de tilsvarende tegnene fra det andre settet.

En SET er i utgangspunktet en streng med karakterer, inkludert de spesielle tegnene som slipper unna.

I det følgende eksemplet vil tr erstatte alle tegn fra standardinngangen (linuxize), ved å kartlegge tegnene fra det første settet med de matchende tegnene fra det andre settet.

echo 'linuxize' | tr 'lin' 'red'

Hver forekomst av l erstattes med r , i med e og n med d :

reduxeze

Karaktersettene kan også defineres ved hjelp av tegnserier. I stedet for å skrive:

echo 'linuxize' | tr 'lmno' 'wxyz'

du kan bruke:

echo 'linuxize' | tr 'ln' 'w-z'

Når alternativet -c ( --complement ) brukes, erstatter tr alle tegn som ikke er i SET1.

I eksemplet nedenfor vil alle tegn bortsett fra "li" erstattes med det siste tegnet fra det andre settet:

echo 'linuxize' | tr -c 'li' 'xy'

liyyyiyyy

Som du kanskje har lagt merke til, har utgangen over en mer synlig karakter enn inngangen. Dette er fordi echo kommandoen skriver ut et usynlig nylinjetegn som også erstattes med y . Hvis du vil gjengi en streng uten en ny linje, bruker du -n alternativet.

Alternativet -d (- --delete ) forteller tr å slette tegn som er spesifisert i SET1. Når du sletter tegn uten å klemme, angir du bare ett sett.

Kommandoen nedenfor vil fjerne l , i og z tegn:

echo 'Linuxize' | tr -d 'liz'

L tegnet blir ikke slettet fordi inndataene inneholder en stor bokstav L mens l tegnet i SET er små bokstaver.

Lnuxe

Alternativet -s ( --squeeze-repeats ) erstatter en sekvens med gjentatte forekomster med tegnsettet i den siste SET.

I eksemplet tr fjerner tr de gjentatte mellomromstegnene:

echo "GNU \ Linux" | tr -s ' '

GNU \ Linux

Når SET2 brukes, erstattes sekvensen til tegnet som er spesifisert i SET1 med SET2.

echo "GNU \ Linux" | tr -s ' ' '_'

GNU_\_Linux

Alternativet -t (- --truncate-set1 ) tvinger tr til å --truncate-set1 til lengden på SET2 før du fortsetter videre.

Som standard, hvis SET1 er større enn SET2 tr vil gjenbruk det siste tegnet på SET2. Her er et eksempel:

echo 'Linux ize' | tr 'abcde' '12'

Utgangen viser at tegnet e fra SET1 samsvarer med det siste tegnet på SET2, som er 2 :

Linux iz2

Nå bruker du den samme kommandoen med -t alternativet:

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 det skiftes ikke.

Kombinere alternativer

tr kommandoen lar deg også kombinere alternativene. For eksempel erstatter følgende kommando først alle tegn bortsett fra i med 0 og klemmer deretter de gjentatte 0 tegnene:

echo 'Linux ize' | tr -cs 'i' '0'

0i0i0

Tr kommandoeksempler

I denne delen vil vi dekke noen eksempler på vanlige bruksområder for tr kommandoen.

Konverter små bokstaver til store bokstaver

Konvertering av små bokstaver til store og små bokstaver er en av de typiske brukssakene til tr kommandoen. samsvarer med små bokstaver og samsvarer med alle store bokstaver.

echo 'Linuxize' | tr '' ''

LINUXIZE

I stedet for karakterklasser, kan du også bruke områder:

echo 'Linuxize' | tr 'az' 'A-Z'

For å konvertere store og små bokstaver, bytter du bare plasseringene til settene.

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 siffertegn, og ved å bruke alternativet -c , fjerner kommandoen alle ikke-sifrede tegn. Utgangen vil se slik ut:

1234567890

Sett hvert ord i en ny linje

For å sette hvert ord i en ny linje, må vi matche alle ikke-alfanumeriske tegn og erstatte dem med en ny linje:

echo 'GNU is an operating system' | tr -cs '' '\n'

GNU is an operating system

Fjern blanke linjer

For å slette de tomme linjene klemmer du ganske enkelt de repeterende nylinjetegnene:

tr -s '\n' < file.txt > new_file.txt

I kommandoen over bruker vi omdirigeringssymbolet < å føre innholdet i file.txt til tr kommandoen. new_file.txt > skriver utdataene fra kommandoen til new_file.txt .

Skriv ut $PATH kataloger på en egen linje

Miljøvariabelen $PATH er en kolonavgrenset liste over kataloger som forteller skallet hvilke kataloger som skal søke etter kjørbare filer når du skriver en kommando.

For å skrive ut hver katalog på en egen linje må vi matche tykktarmen (:) og erstatte den med den nye linjen:

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 veldig nyttig, kan tr bare jobbe med enkeltpersoner. For mer kompleks mønster matching og strengmanipulering, bør du bruke sed eller awk .

tr terminal