Android

Tr kommando i Linux med exempel

Linux Tutorials | tr command | GeeksforGeeks

Linux Tutorials | tr command | GeeksforGeeks

Innehållsförteckning:

Anonim

tr är ett kommandoradsverktyg i Linux- och Unix-system som översätter, raderar och pressar tecken från standardingången och skriver resultatet till standardutgången.

tr kommandot kan utföra operationer som att ta bort upprepade tecken, konvertera versaler till små bokstäver och grundläggande tecken ersätta och ta bort. Vanligtvis används det i kombination med andra kommandon genom rörledning.

I den här tutorialen visar vi dig hur du använder kommandot tr genom praktiska exempel och detaljerade förklaringar av de vanligaste alternativen.

Hur man använder tr kommandot

Syntaxen för tr kommandot är enligt följande:

tr OPTION… SET1

tr accepterar två uppsättningar tecken, vanligtvis med samma längd, och ersätter tecknen i de första uppsättningarna med motsvarande tecken från den andra uppsättningen.

En SET är i grunden en sträng av tecken, inklusive de specialtecken som undviks från släpp.

I följande exempel kommer tr att ersätta alla tecken från standardinmatningen (linuxize) genom att kartlägga tecknen från den första uppsättningen med de matchande tecknen från den andra uppsättningen.

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

Varje förekomst av l ersätts med r , i med e och n med d :

reduxeze

Teckenuppsättningarna kan också definieras med hjälp av teckenintervall. I stället för att skriva:

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

du kan använda:

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

När alternativet -c (- --complement ) används ersätter tr alla tecken som inte finns i SET1.

I exemplet nedan kommer alla tecken utom "li" att ersättas med det sista tecknet från den andra uppsättningen:

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

liyyyiyyy

Som du kanske har lagt märke till har utgången ovan ett mer synligt tecken än ingången. Detta beror på att echo skriver ut ett osynligt nylinjetecken som också ersätts med y . För att eko en sträng utan en ny rad använder du alternativet -n .

--delete -d (- --delete ) berättar för tr att radera tecken som anges i SET1. När du tar bort tecken utan att klämma anger du bara en uppsättning.

Kommandot nedan tar bort l , i och z tecken:

echo 'Linuxize' | tr -d 'liz'

L tecknet raderas inte eftersom ingången innehåller en stor bokstav L medan l tecknet i SET är gemener.

Lnuxe

--squeeze-repeats -s ( --squeeze-repeats ) ersätter en sekvens av upprepade händelser med teckenuppsättningen i den sista SET.

I följande exempel tar tr de upprepade mellanslagstecken:

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

GNU \ Linux

När SET2 används ersätts sekvensen för det tecken som anges i SET1 med SET2.

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

GNU_\_Linux

--truncate-set1 -t (- --truncate-set1 ) tvingar tr att trunkera SET1 till längden på SET2 innan du vidarebearbetar.

Som standard, om SET1 är större än SET2 tr återanvänder det sista tecknet i SET2. Här är ett exempel:

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

Outputen visar att tecknet e från SET1 matchas med det senaste tecknet i SET2, vilket är 2 :

Linux iz2

Använd nu samma kommando med alternativet -t :

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

Linux ize

Du kan se att de tre sista tecknen i SET1 tas bort. SET1 blir 'ab', samma längd som SET2, och ingen ersättning görs.

Kombinera alternativ

Med kommandot tr kan du också kombinera dess alternativ. Till exempel ersätter följande kommando först alla tecken utom i med 0 och pressar sedan upprepade 0 tecken:

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

0i0i0

Exempel på tr kommando

I det här avsnittet täcker vi några exempel på vanliga användningar av tr kommandot.

Konvertera gemener till versaler

Att konvertera gemener till versaler eller versaler är ett av de typiska användningsfallen för tr kommandot. matchar alla små bokstäver och matchar alla stora tecken.

echo 'Linuxize' | tr '' ''

LINUXIZE

Istället för teckenklasser kan du också använda intervall:

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

Om du vill konvertera versaler till små bokstäver byter du helt enkelt platserna för seten.

Ta bort alla icke-numeriska tecken

Följande kommando tar bort alla icke-numeriska tecken:

echo "my phone is 123-456-7890" | tr -cd

står för alla siffror och med alternativet -c tar kommandot bort alla icke-siffriga tecken. Utgången ser ut så här:

1234567890

Sätt varje ord i en ny rad

För att sätta varje ord i en ny rad måste vi matcha alla icke-alfanumeriska tecken och ersätta dem med en ny rad:

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

GNU is an operating system

Ta bort tomma rader

För att radera de tomma linjerna klämmer du bara in de repetitiva nylinjetecken:

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

I kommandot ovan använder vi omdirigeringssymbolen < att skicka innehållet i file.txt till kommandot tr . Omdirigering > skriver kommandots new_file.txt till new_file.txt .

Skriv ut $PATH kataloger på en separat rad

$PATH är en kolonavgränsad lista över kataloger som säger skalet vilka kataloger som ska söka efter körbara filer när du skriver ett kommando.

För att skriva ut varje katalog på en separat rad måste vi matcha kolon (:) och ersätta den med den nya raden:

echo $PATH | tr ':' '\n'

/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin

Slutsats

tr är ett kommando för att översätta eller radera tecken.

Trots att det är mycket användbart kan tr bara arbeta med enstaka tecken. För mer komplexa mönstermatchning och strängmanipulation bör du använda sed eller awk .

tr terminal