Iz službenog opisa lako je shvatiti vrijednost ovog alata. Linux dolazi s velikom kolekcijom ugrađenih alata. Postoje neke posebne koje su izuzetno korisne za manipulaciju tekstom. Već smo obradili brojne od njih, poput Vim, Nano, awk, sed i drugih alata.
Onima koji redovito rade s tekstovima, "tr" će zasigurno biti jako, jako korisno. Ovaj će članak ilustrirati najčešće korištenje "tr" s dovoljno primjera.
Napomena: Vodič će upotrijebiti tonu lažnih datoteka sa slučajnim sadržajem. Sve slučajne nizove generira Slučajno.org.
Mjesto
koji tr
Ovo je puni put naredbenog alata "tr".
Osnovna upotreba
Za upotrebu alata "tr" morate koristiti sljedeću strukturu naredbi.
trPostoje različite mogućnosti i načini manipulacije tekstovima pomoću "tr". Isprva provjerimo ovu demo datoteku.
demo mačka.txt
Svi su znakovi malim slovima, zar ne? Pretvorimo ih u velika slova!
mačka demo.txt | tr [: donji:] [: gornji:]
Ovdje prvi parametar "tr" označava izvođenje prijevoda na svim malim slovima unosa. Drugi dio govori o tome da se na izlazu transformiraju u velika slova.
Sad, učinimo suprotno.
mačka demo1.txtmačka demo1.txt | tr [: gornji:] [: donji:]
Postoji i drugi način izvođenja istog zadatka. Provjerimo.
mačka demo.txt | tr [a-z] [A-Z]
Sada, umjesto da kažemo „tr“ da prevede velika u mala ili mala u velika slova, rekli smo da identificiramo unose koji odgovaraju rasponu od „a“ do „z“ i prevedemo u njihov ekvivalent iz raspona „A“ u „Z“.
Ova slična metoda također se može koristiti za prevođenje velikog u malo slovo.
mačka demo1.txt | tr [A-Z] [a-z]
Poigravanje brojevima
Vidjeli smo kako prevesti veliko slovo u malo, desno? Vrijeme je da se poigrate sa znamenkama.
Pomoću sljedeće naredbe možemo lako prevesti sve znamenke (0-9) u njihove ekvivalentne znakove!
mačka demo_digit.txtmačka demo_digit.txt | tr [0-9] [a-z]
Super! Što kažete na velika slova?
mačka demo_digit.txt | tr [0-9] [A-Z]
Jednostavno, a opet zanimljivo, zar ne? Znakove također možemo transformirati u znamenke!
mačka demo_donji slučaj.txtmačka demo_donji slučaj.txt | tr [a-z] [0-9]
Uh, čini se kao da su se stvari pokvarile, zar ne? Pa, od 'a' do 'j' možemo koristiti samo za predstavljanje jednoznamenkastih brojeva. Ako postoji bilo koji znak koji je izvan ove granice, "tr" će zamijeniti znak s ']'.
Brisanje znakova
Kao što službeni opis sugerira, "tr" može učiniti više od samog prevođenja znakova. U sljedećem ćemo primjeru provjeriti kako pomoću "tr" izbrisati određene znakove.
mačka slučajna.txt
Izbrišimo sad sve brojeve iz sadržaja.
mačka slučajna.txt | tr -d [0-9]
Ovdje je zastavica "-d" reći "tr" za brisanje i [0-9] označavajući znamenke za brisanje.
To možemo i s likovima. Sljedeća naredba zadržat će sve brojeve, ali uklonit će sve znakove.
mačka slučajna.txt | tr -d [a-z]
Kako bi bilo da iz datoteke uklonite samo jedan određeni znak?
mačka demo_donji slučaj.txtmačka demo_donji slučaj.txt | tr -d 'y'
Iz datoteke je izbrisao sve unose 'y'.
Stiskanje ponovljenih likova
Postoje slučajevi kada se znak ponavlja uzastopno. Ako imate posla s takvim dosadnim problemima, samo prepustite "tr" da se pobrine za to! Pomoću sljedeće naredbe možete stisnuti takve pojave. U osnovi zadržava početnu pojavu lika i briše dodatne.
Prvo je vrijeme da provjerite kako izgleda demo datoteka.
mačka duplikat.txt
Sad proslijedite sadržaj na "tr".
mačka duplikat.txt | tr -s [: znamenke:]
Ovdje je parametar „-s“ pokazatelj izvođenja akcije „stiskanja“.
Razbijanje / spajanje rečenica
Provjerimo demo datoteku.
duplikat šišmiša.txt
Sadrži rečenicu s razmacima koji dijele riječi, zar ne? Podijelimo riječi u nove retke.
mačka duplikat.txt | tr "" "\ n"
Ova je naredba zamijenila sve razmaknice znakovima novog reda.
Spojimo ponovno izlomljenu rečenicu u dugačku.
duplikat šišmiša.txtmačka duplikat.txt | tr "\ n" ""
Prevođenje znakova
Kao što smo i prije prevodili znakove, i ovaj ćemo put učiniti isto, ali samo s jednim znakom.
mačka demo.txt
U ovoj datoteci promijenimo sve znakove novog retka u zarez.
mačka demo.txt | tr "\ n" ";"
Morao sam ga omotati oko "odjeka". U suprotnom, stvorilo bi nešto rezultata, jer bi se i posljednji znak novog retka preveo u zarez.
Postoji drugačiji način mijenjanja likova. Međutim, ovu je teže kontrolirati.
mačka duplikat1.txtmačka duplikat1.txt | tr -c 'd' 'z'
mačka duplikat1.txt | tr -c 'd' 'z'
Vau! Omotajmo ga oko "odjeka" kako bismo bolje razumjeli izlaz.
echo $ (mačka duplikat1.txt | tr -c "d" "z")
Što se ovdje dogodilo? Koristeći zastavicu "-c", "tr" će zadržati samo ciljni znak nepromijenjenim. U slučaju neusklađenosti, svaki će se drugi lik transformirati. Ovdje je bilo koji znak osim "b" zamijenjen s "z".
Prevođenje žica
"Tr" također može raditi sa žicama. Izvršimo zamjenu niza.
mačka duplikat1.txtmačka duplikat1.txt | tr "duplikat" "ne_dvostručiti"
Moj niz koji treba zamijeniti kraći je od niza kojim se zamjenjuje, pa nije odgovarao.
Skupovi znakova
Do sada ste primijetili da postoji niz skupova znakova koje podržava "tr". Iako su neki od njih korišteni u gornjim primjerima, drugi skupovi znakova također su vrlo korisni. Evo popisa svih podržanih popisa znakova.
POSIX skupovi znakova
- [: znamenka:]: Znamenke 0-9
- [: alfa:]: Abecede a-z i A-Z.
- [: alnum:]: Alfa-numerički znakovi
- [: punct:]: Interpunkcijski simboli
- [: razmak:]: Bilo koji razmak, npr. razmak, kartica, FF, CR, NL, FF itd.
- [: gornja:]: Sve velike abecede
- [: donji:]: Sve male abecede
- [: cntrl:]: Svi kontrolni znakovi (NL, CR, EXT, STX, ACK, SO, DC1, DC2, NAK, ETB, ESC, IS1, IS2, DEL itd.).)
Dodatni skupovi znakova
- [A-Z]: Sve velike abecede
- [a-z]: Sve male abecede
- [0-9]: Sve znamenke
Završne misli
Postoji mnoštvo načina na koje sve ove značajke "tr" mogu koristiti korisnicima. Uvijek preporučam da provjerite sve dostupne opcije i dubinske vodiče o bilo kojem Linux alatu sa njihovih stranica s informacijama i informacijama i pomoći jer mogu ponuditi dragocjenije znanje.
tr --pomoćčovjek tr
info tr
Uživati!