Från den officiella beskrivningen är det lätt att förstå värdet av detta verktyg. Linux kommer med en stor samling inbyggda verktyg. Det finns några speciella som är mycket användbara för textmanipulation. Vi har redan täckt ett antal av dessa, som Vim, Nano, awk, sed och andra verktyg.
De som arbetar med texter regelbundet, “tr” kommer definitivt att vara riktigt, riktigt bra. Den här artikeln illustrerar den vanligaste användningen av ”tr” med tillräckliga exempel.
Obs! Tutorialen kommer att använda massor av dummyfiler med slumpmässigt innehåll. Alla slumpmässiga strängar genereras av Slumpmässig.org.
Plats
vilken tr
Detta är den fullständiga sökvägen för kommandoverktyget “tr”.
Grundläggande användning
För att använda “tr” -verktyget måste du använda följande kommandostruktur.
trDet finns olika alternativ och sätt att manipulera texterna med "tr". Låt oss först kolla in den här demo-filen.
kattdemo.Text
Alla karaktärer är med gemener, höger? Låt oss förvandla dem till versaler!
kattdemo.txt | tr [: nedre:] [: övre:]
Här indikerar den första parametern för “tr” att utföra en översättning på alla små bokstäver i ingången. Den andra delen talar om att förvandla dem till versaler vid utgången.
Nu, låt oss göra det motsatta.
kattdemo1.Textkattdemo1.txt | tr [: övre:] [: nedre:]
Det finns också ett annat sätt att utföra samma uppgift. Låt oss kolla upp det.
kattdemo.txt | tr [a-z] [A-Z]
Nu, istället för att säga till "tr" att översätta versaler till gemener eller små bokstäver till versaler, berättade vi att identifiera poster som matchar intervallet "a" till "z" och översätta till motsvarande från intervallet "A" till "Z".
Denna liknande metod kan också användas för att översätta stora och små bokstäver.
kattdemo1.txt | tr [A-Z] [a-z]
Leker med siffror
Vi såg hur man översätter versaler till gemener, höger? Det är dags att leka med siffror.
Med hjälp av följande kommando kan vi enkelt översätta alla siffror (0-9) till motsvarande tecken!
katt demo_digit.Textkatt demo_digit.txt | tr [0-9] [a-z]
Grymt bra! Vad sägs om stora bokstäver?
katt demo_digit.txt | tr [0-9] [A-Z]
Enkelt, men ändå intressant, rätt? Vi kan också förvandla tecken till siffror också!
katt demo_lowercase.Textkatt demo_lowercase.txt | tr [a-z] [0-9]
Det verkar som om saker gick sönder, eller hur? Vi kan bara använda 'a' till 'j' för att representera enstaka siffror. Om det finns någon karaktär som är utanför denna gräns, kommer "tr" att ersätta karaktären med ']'.
Tar bort tecken
Som den officiella beskrivningen antyder kan "tr" göra mer än bara översättning av tecken. I följande exempel ska vi kolla in hur man använder “tr” för att radera vissa tecken.
slumpmässig katt.Text
Låt oss nu ta bort alla siffror från innehållet.
slumpmässig katt.txt | tr -d [0-9]
Här är "-d" -flaggan att säga till "tr" att radera och [0-9] som anger siffror som ska tas bort.
Vi kan också göra det med karaktärerna. Följande kommando behåller alla siffror men tar bort alla tecken.
slumpmässig katt.txt | tr -d [a-z]
Vad sägs om att ta bort en enda specifik karaktär från filen?
katt demo_lowercase.Textkatt demo_lowercase.txt | tr -d 'y'
Den raderade alla y-poster från filen.
Klämmer upprepade tecken
Det finns tillfällen då en karaktär upprepas i följd. Om du har att göra med sådana irriterande problem, låt “tr” ta hand om det! Med följande kommando kan du pressa sådana händelser. Det håller i huvudsak karaktärens ursprungliga förekomst och raderar de ytterligare.
Första gången för att kontrollera hur demofilen ser ut.
kattdublik.Text
Ge nu innehållet till “tr”.
kattdublik.txt | tr -s [: siffror:]
Här är parametern "-s" en indikator för att utföra "squeeze" -åtgärden.
Bryta / slå samman meningar
Låt oss kolla in demofilen.
bat duplikat.Text
Den innehåller en mening med mellanslag som delar orden, höger? Låt oss dela upp orden i nya rader.
kattdublik.txt | tr "" "\ n"
Detta kommando ersatte alla mellanslagstecken med newline-tecken.
Låt oss slå samman den trasiga meningen till en lång mening igen.
bat duplikat.Textkattdublik.txt | tr "\ n" ""
Översätta tecken
Precis som vi översatte karaktärer tidigare, den här gången, kommer vi att göra detsamma men bara med en enda karaktär.
kattdemo.Text
I den här filen, låt oss ändra alla nya linjetecken till ett semikolon.
kattdemo.txt | tr "\ n" ";"
Jag var tvungen att linda den runt "eko". Annars skulle det skapa viss utdata eftersom den sista newline-tecknet också skulle översättas till ett semikolon.
Det finns ett annat sätt att byta karaktär. Den här är dock svårare att kontrollera.
katt duplikat1.Textkatt duplikat1.txt | tr -c 'd' 'z'
katt duplikat1.txt | tr -c 'd' 'z'
Wow! Låt oss linda det runt "eko" för att bättre förstå produktionen.
echo $ (katt duplikat1.txt | tr -c 'd' 'z')
Vad hände här? Med "-c" -flaggan kommer "tr" bara att hålla målkaraktären oförändrad. I händelse av oöverensstämmelse kommer alla andra karaktärer att transformeras. Här ersattes någon annan karaktär än 'b' med 'z'.
Översätta strängar
"Tr" kan också fungera med strängar. Låt oss utföra strängbyte.
katt duplikat1.Textkatt duplikat1.txt | tr "duplicera" "not_duplicate"
Min sträng som ska bytas ut är kortare än strängen som ska ersättas med, så den passade inte.
Teckenuppsättningar
Nu har du märkt att det finns ett antal teckenuppsättningar som stöds av “tr”. Medan ett antal av dem användes i ovanstående exempel, är andra teckenuppsättningar också mycket hjälpsamma. Här är en lista över alla teckenlistor som stöds.
POSIX teckenuppsättningar
- [: siffra:]: siffror 0-9
- [: alfa:]: Alfabet a-z och A-Z.
- [: alnum:]: Alfanumeriska tecken
- [: punkt:]: skiljetecken
- [: space:]: Vilket mellanslag som helst, till exempel space, tab, FF, CR, NL, FF, etc.
- [: övre:]: Alla versaler
- [: nedre:]: Alla små bokstäver
- [: cntrl:]: Alla kontrolltecken (NL, CR, EXT, STX, ACK, SO, DC1, DC2, NAK, ETB, ESC, IS1, IS2, DEL etc.)
Ytterligare teckenuppsättningar
- [A-Z]: Alla stora bokstäver
- [a-z]: Alla små bokstäver
- [0-9]: Alla siffror
Slutgiltiga tankar
Det finns många sätt att alla dessa funktioner i “tr” kan gynna användarna. Jag rekommenderar alltid att kolla in alla tillgängliga alternativ och djupgående guider om alla Linux-verktyg från deras man, info och hjälp sidor eftersom de kan erbjuda mer värdefull kunskap.
tr --hjälpman tr
info tr
Njut av!