Android

Tr kommando i linux med eksempler

Iron Danger Review-schickes Taktik Story-RPG mit Zeitschleife (Deutsch-German, with many subtitles)

Iron Danger Review-schickes Taktik Story-RPG mit Zeitschleife (Deutsch-German, with many subtitles)

Indholdsfortegnelse:

Anonim

tr er et kommandolinjeværktøj i Linux og Unix-systemer, der oversætter, sletter og klemmer tegn fra standardindgangen og skriver resultatet til standardoutputet.

tr kommandoen kan udføre operationer som at fjerne gentagne tegn, konvertere store bogstaver til små bogstaver og grundlæggende tegn udskifte og fjerne. Typisk bruges det i kombination med andre kommandoer gennem rørsystemer.

I denne tutorial vil vi vise dig, hvordan du bruger kommandoen tr gennem praktiske eksempler og detaljerede forklaringer på de mest almindelige muligheder.

Sådan bruges tr kommandoen

Syntaks for kommandoen tr er som følger:

tr OPTION… SET1

tr accepterer to sæt tegn, normalt med samme længde, og erstatter tegnene i de første sæt med de tilsvarende tegn fra det andet sæt.

Et SET er dybest set en streng med tegn, inklusive de særlige tegn, der ikke er sluppet tilbage.

I det følgende eksempel erstatter tr alle tegn fra standardindgangen (linuxize) ved at kortlægge tegnene fra det første sæt med de matchende tegn 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ættene kan også defineres vha. Tegnserier. I stedet for for eksempel at skrive:

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

du kan bruge:

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

Når indstillingen -c (- --complement ) bruges, erstatter tr alle tegn, der ikke er i SET1.

I eksemplet nedenfor erstattes alle tegn undtagen “li” med det sidste tegn fra det andet sæt:

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

liyyyiyyy

Som du måske har bemærket, har udgangen ovenfor en mere synlig karakter end input. Dette skyldes, at echo kommandoen udskriver et usynligt nytlinjetegn , der også erstattes med y . Hvis du vil gentage en streng uden en ny linje, skal du bruge indstillingen -n .

Indstillingen -d (- --delete ) fortæller tr at slette tegn, der er specificeret i SET1. Når du sletter tegn uden at klemme, skal du kun angive et sæt.

Kommandoen herunder fjerner l , i og z tegn:

echo 'Linuxize' | tr -d 'liz'

L tegnet slettes ikke, fordi indgangen inkluderer en stor bogstav L mens l tegnet i SET er små.

Lnuxe

Indstillingen -s ( --squeeze-repeats ) erstatter en række gentagne forekomster med tegnsættet i det sidste SET.

I det følgende eksempel fjerner tr de gentagne mellemrumstegn:

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

GNU \ Linux

Når SET2 bruges, erstattes sekvensen for det tegn, der er specificeret i SET1, med SET2.

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

GNU_\_Linux

Indstillingen -t (- --truncate-set1 ) tvinger tr til at afkorte SET1 til længden af ​​SET2, inden der udføres yderligere behandling.

Hvis SET1 er større end SET2 tr vil det som standard genbruge det sidste tegn i SET2. Her er et eksempel:

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

Outputet viser, at tegnet e fra SET1 matches med det nyeste tegn på SET2, der er 2 :

Linux iz2

Brug nu den samme kommando med indstillingen -t :

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

Linux ize

Du kan se, at de sidste tre tegn i SET1 fjernes. SET1 bliver 'ab', samme længde som SET2, og der foretages ingen udskiftning.

Kombination af muligheder

tr kommandoen giver dig også mulighed for at kombinere dens muligheder. F.eks. Erstatter følgende kommando først alle tegn undtagen i med 0 og presser derefter de gentagne 0 tegn:

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

0i0i0

Tr kommandeksempler

I dette afsnit dækker vi et par eksempler på almindelige anvendelser af tr kommandoen.

Konverter små bogstaver til store bogstaver

Konvertering af små bogstaver til store bogstaver eller omvendt er et af de typiske brugstilfælde til tr kommandoen. matcher alle små bogstaver og matcher alle store bogstaver.

echo 'Linuxize' | tr '' ''

LINUXIZE

I stedet for tegnklasser kan du også bruge intervaller:

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

For at konvertere store bogstaver til små bogstaver skal du blot skifte sæt til steder.

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 cifrede tegn, og ved at bruge indstillingen -c fjerner kommandoen alle ikke-cifrede tegn. Outputet ser sådan ud:

1234567890

Sæt hvert ord i en ny linje

For at sætte hvert ord i en ny linje, skal 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 tomme linjer

For at slette de tomme linjer skal du blot klemme de gentagne nye linjetegn:

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

I kommandoen ovenfor bruger vi omdirigeringssymbolet < til at videregive indholdet af file.txt til kommandoen tr . Omdirigering > skriver output af kommandoen til new_file.txt .

Udskriv $PATH mapper på en separat linje

Miljøvariablen $PATH er en kolonafgrænset liste over mapper, der fortæller shell, hvilke mapper, der skal søge efter eksekverbare filer, når du skriver en kommando.

For at udskrive hvert katalog på en separat linje skal vi 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 oversættelse eller sletning af tegn.

Selvom det er meget nyttigt, kan tr kun arbejde med enkeltpersoner. For mere kompleks mønster matching og strengmanipulation, skal du bruge sed eller awk .

tr terminal