tr är ett kommandoradsverktyg i Linux och Unix-system som översätter, raderar och klämmer tecken från standardinmatningen och skriver resultatet till standardutmatningen.

kommandottr kan utföra operationer som att ta bort upprepade tecken, konvertera stora bokstäver till små bokstäver och grundläggande tecken som ersätter och tar bort. Vanligtvis används den i kombination med andra kommandon genom rörledningar.,

i denna handledning visar vi dig hur du använder kommandottr genom praktiska exempel och detaljerade förklaringar av de vanligaste alternativen.

så här använder du kommandot tr #

syntaxen för kommandot tr är som följer:

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 de första uppsättningarna.andra set.,

aSET är i grunden en teckensträng, inklusive de speciella backslash-escaped-tecknen.

i följande exempel kommer tr att ersätta alla tecken från standardinmatningen (linuxize) genom att mappa tecknen från den första uppsättningen med matchande dem från den andra uppsättningen.,

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

varje förekomst avl ersätts medr,i mede ochn mednmed :

reduxeze

teckenuppsättningarna kan också definieras med hjälp av teckenintervall., Till exempel, istället för att skriva:

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

Du kan använda:

När -c (--complement) används alternativet, tr ersätter alla tecken som inte är skrivna.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 märkt har utmatningen ovan ett mer synligt tecken än inmatningen., Detta beror på att kommandot echo skriver ut ett osynligt newline-tecken \n som också ersätts med y. För att echo en sträng utan en ny linje, använd alternativet -n.

alternativet-d (--delete) talar om förtr att ta bort tecken som anges i SET1. När du tar bort tecken utan att klämma, ange endast en uppsättning.,

kommandot nedan tar bortl,i ochz tecken:

echo 'Linuxize' | tr -d 'liz'

tecknetL raderas inte eftersom inmatningen innehåller ett versalerL medanl – tecknet i uppsättningen är gement.

Lnuxe

alternativet-s (--squeeze-repeats) ersätter en sekvens av upprepade händelser med teckenuppsättningen i den senaste uppsättningen.,

i följande exempel tartr bort de upprepade mellanslagstecken:

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

När SET2 används ersätts sekvensen av tecknet som anges i SET1 med SET2.

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

alternativet -t (--truncate-set1) tvingar tr att trunkera SET1 till längden på SET2 innan du utför vidare bearbetning.,

som standard kommer om SET1 är större än SET2 tr att återanvända det sista tecknet i SET2. Här är ett exempel:

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

utmatningen 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 -t alternativ:

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

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

kombinera alternativ #

kommandottr låter dig också kombinera sina 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

Tr Command Examples #

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

konvertera gemener till versaler #

konvertera gemener till versaler eller omvänt är ett av de typiska användningsfallen för kommandot tr. matchar alla gemener och matchar alla versaler.

echo 'Linuxize' | tr '' ''
LINUXIZE

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

echo 'Linuxize' | tr 'a-z' 'A-Z'

för att konvertera övre Fodral till nedre fodral, helt enkelt byta plats på uppsättningarna.,

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 siffriga tecken, och genom att använda alternativet -c tar kommandot bort alla icke-siffriga tecken.,kommer att se ut så här:

1234567890

Lägg 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'
GNUisanoperatingsystem

ta bort tomma rader # för att ta bort de tomma raderna trycker du bara på repetitiva newline-tecken:

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

i kommandot ovan använder vi omdirigeringssymbolen<för att skicka innehållet ifile.txttill kommandottr., Omdirigeringen> skriver utdata från kommandot tillnew_file.txt.

Skriv ut $PATH kataloger på en separat rad #

miljövariabeln$PATH är en kolon avgränsad lista över kataloger som talar om för skalet vilka kataloger att 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.

även om det är mycket användbart kan tr endast fungera med enstaka tecken. För mer komplex mönstermatchning och strängmanipulation bör du använda sed eller awk .

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *