Fra den offisielle beskrivelsen er det lett å forstå verdien av dette verktøyet. Linux kommer med en stor samling med innebygde verktøy. Det er noen spesielle som er veldig nyttige for tekstmanipulering. Vi har allerede dekket en rekke av disse, som Vim, Nano, awk, sed og andre verktøy.
De som jobber med tekster med jevne mellomrom, “tr” vil definitivt være veldig, veldig nyttig. Denne artikkelen vil illustrere den vanligste bruken av “tr” med tilstrekkelige eksempler.
Merk: Opplæringen skal bruke massevis av dummy-filer med tilfeldig innhold. Alle tilfeldige strenger genereres av Tilfeldig.org.
plassering
hvilken tr
Dette er den fulle banen til “tr” -kommandoverktøyet.
Grunnleggende bruk
For å bruke “tr” -verktøyet, må du bruke følgende kommandostruktur.
trDet er forskjellige alternativer og måter å manipulere tekstene på ved hjelp av “tr”. Først, la oss sjekke ut denne demofilen.
kattdemo.tekst
Alle tegnene er med små bokstaver, til høyre? La oss forvandle dem til store bokstaver!
kattdemo.txt | tr [: nedre:] [: øvre:]
Her indikerer den første parameteren for “tr” å utføre en oversettelse på alle små bokstaver i inngangen. Den andre delen forteller at de skal forvandles til store bokstaver ved utgangen.
La oss gjøre det motsatte.
kattdemo1.tekstkattdemo1.txt | tr [: øvre:] [: nedre:]
Det er også en annen måte å utføre den samme oppgaven på. La oss sjekke det ut.
kattdemo.txt | tr [a-z] [A-Z]
Nå, i stedet for å fortelle “tr” å oversette store og små eller små til store bokstaver, ba vi om å identifisere oppføringer som samsvarer med området “a” til “z” og oversette til deres ekvivalente fra området “A” til “Z”.
Denne lignende metoden kan også brukes til å oversette store og små bokstaver.
kattedemon1.txt | tr [A-Z] [a-z]
Leker med tall
Vi så hvordan vi skal oversette store og små bokstaver, ikke sant? Det er på tide å leke med sifre.
Ved å bruke følgende kommando kan vi enkelt oversette alle sifrene (0-9) til tilsvarende tegn!
kattens demo_digit.tekstkattens demo_digit.txt | tr [0-9] [a-z]
Rått! Hva med store bokstaver?
kattens demo_digit.txt | tr [0-9] [A-Z]
Enkel, men likevel interessant, ikke sant? Vi kan også transformere tegn til sifre også!
katt demo_lowercase.tekstkatt demo_lowercase.txt | tr [a-z] [0-9]
Åh, det virker som om ting brøt sammen, ikke sant? Vi kan bare bruke 'a' til 'j' for å representere enkeltsifre. Hvis det er noen tegn som er utenfor dette bundet, vil "tr" erstatte tegnet med ']'.
Slette tegn
Som den offisielle beskrivelsen antyder, kan “tr” gjøre mer enn bare oversettelse av tegn. I det følgende eksemplet vil vi sjekke ut hvordan du bruker “tr” til å slette visse tegn.
katt tilfeldig.tekst
La oss nå slette alle tallene fra innholdet.
katt tilfeldig.txt | tr -d [0-9]
Her skal “-d” -flagget fortelle “tr” å slette og [0-9] som angir sifre som skal slettes.
Vi kan også gjøre det med karakterene. Følgende kommando vil beholde alle tallene, men fjerne alle tegnene.
katt tilfeldig.txt | tr -d [a-z]
Hva med å fjerne bare ett bestemt tegn fra filen?
katt demo_lowercase.tekstkatt demo_lowercase.txt | tr -d 'y'
Den slettet alle 'y' oppføringene fra filen.
Klemmer gjentatte tegn
Det er tider når et tegn gjentas sekvensielt. Hvis du har å gjøre med slike irriterende problemer, kan du bare la “tr” ta seg av det! Ved å bruke følgende kommando kan du klemme slike hendelser. Det holder egentlig den opprinnelige forekomsten av karakteren og sletter de ekstra.
Først må du sjekke hvordan demofilen ser ut.
katt duplikat.tekst
Gi innholdet nå til “tr”.
katt duplikat.txt | tr -s [: sifre:]
Her er “-s” -parameteren indikatoren for å utføre “squeeze” -handlingen.
Bryte / slå sammen setninger
La oss sjekke ut demofilen.
flaggermus duplikat.tekst
Den inneholder en setning med mellomrom som deler ordene, ikke sant? La oss dele ordene i nye linjer.
katt duplikat.txt | tr "" "\ n"
Denne kommandoen erstattet alle mellomromstegnene med nye linjer.
La oss slå den ødelagte setningen sammen til en lang setning igjen.
flaggermus duplikat.tekstkatt duplikat.txt | tr "\ n" ""
Oversetter tegn
Akkurat som vi oversatte tegn tidligere, vil vi denne gangen gjøre det samme, men bare med en enkelt karakter.
kattdemo.tekst
I denne filen, la oss endre alle de nye linjetegnene til et semikolon.
kattdemo.txt | tr "\ n" ";"
Jeg måtte pakke det rundt "ekko". Ellers vil det skape noe utgang fordi den siste newline-tegnet også vil bli oversatt til et semikolon.
Det er en annen måte å endre karakter på. Imidlertid er denne vanskeligere å kontrollere.
katt duplikat1.tekstkatt duplikat1.txt | tr -c 'd' 'z'
katt duplikat1.txt | tr -c 'd' 'z'
Wow! La oss pakke det rundt "ekko" for å bedre forstå utdataene.
ekko $ (katt duplikat1.txt | tr -c 'd' 'z')
Hva skjedde her? Ved å bruke “-c” -flagget holder “tr” bare måltegnet uendret. I tilfelle misforhold, vil alle andre tegn bli forvandlet. Her ble alle andre tegn enn 'b' erstattet av 'z'.
Oversetter strenger
“Tr” kan også fungere med strenger. La oss utføre strengutskifting.
katt duplikat1.tekstkatt duplikat1.txt | tr "duplisere" "ikke_duplisere"
Strengen min som skal erstattes er kortere enn strengen som skal erstattes med, så den passet ikke.
Tegnsett
Nå har du lagt merke til at det finnes en rekke tegnsett støttet av “tr”. Mens en rekke av dem ble brukt i eksemplene ovenfor, er andre tegnsett også ganske nyttige. Her er en liste over alle støttede tegnlister.
POSIX tegnsett
- [: siffer:]: Siffer 0-9
- [: alfa:]: Alfabetene a-z og A-Z.
- [: alnum:]: Alfanumeriske tegn
- [: punkt:]: Punktuasjonssymboler
- [: space:]: Hvilken som helst blanktegn, for eksempel space, tab, FF, CR, NL, FF, etc.
- [: øvre:]: Alle store bokstaver
- [: lower:]: Alle små bokstaver
- [: cntrl:]: Alle kontrolltegn (NL, CR, EXT, STX, ACK, SO, DC1, DC2, NAK, ETB, ESC, IS1, IS2, DEL osv.)
Flere tegnsett
- [A-Z]: Alle store bokstaver
- [a-z]: Alle små bokstaver
- [0-9]: Alle sifre
Siste tanker
Det er mange måter alle disse funksjonene i “tr” kan være til fordel for brukerne. Jeg anbefaler alltid å sjekke ut alle tilgjengelige alternativer og grundige guider på ethvert Linux-verktøy fra deres mann, info og hjelpesider, da de kan tilby mer verdifull kunnskap.
tr - hjelpmann tr
info tr
Nyt!