Pēc oficiālā apraksta ir viegli saprast šī rīka vērtību. Linux nāk klajā ar lielu iebūvētu rīku kolekciju. Ir daži īpaši, kas ir ļoti noderīgi teksta manipulācijām. Mēs jau esam apskatījuši vairākus no tiem, piemēram, Vim, Nano, awk, sed un citus rīkus.
Tie, kas regulāri strādā ar tekstiem, “tr” noteikti būs ļoti, patiešām noderīgi. Šis raksts ar pietiekamiem piemēriem ilustrēs visbiežāk lietoto “tr”.
Piezīme. Apmācībā tiks izmantota daudz manekenu failu ar nejaušu saturu. Visas nejaušās virknes ģenerē Nejaušs.org.
Atrašanās vieta
kas tr
Šis ir komandas “tr” komandas pilnais ceļš.
Pamata lietošana
Lai izmantotu rīku “tr”, jums jāizmanto šāda komandu struktūra.
trIr dažādas iespējas un veidi, kā manipulēt ar tekstiem, izmantojot “tr”. Sākumā pārbaudīsim šo demonstrācijas failu.
kaķu demonstrācija.txt
Visas rakstzīmes ir pa labi ar mazajiem burtiem? Pārveidosim tos uz lielajiem burtiem!
kaķu demonstrācija.txt | tr [: apakšējais:] [: augšējais:]
Pirmais “tr” parametrs norāda, ka jāveic tulkošana ar visām ievades mazajām rakstzīmēm. Otrajā daļā ir teikts, kā tos pārveidot lielajos burtos pie izejas.
Tagad rīkosimies tieši pretēji.
kaķu demonstrācija.txtkaķu demonstrācija.txt | tr [: augšējais:] [: apakšējais:]
Ir arī cits veids, kā veikt šo pašu uzdevumu. Pārbaudīsim.
kaķu demonstrācija.txt | tr [a-z] [A-Z]
Tā vietā, lai teiktu “tr” tulkot lielos burtus uz mazajiem burtiem vai mazos uz lielajiem burtiem, mēs teicām identificēt ierakstus, kas atbilst diapazonam no “a” līdz “z”, un tulkot to ekvivalentos no diapazona “A” līdz “Z”.
Šo līdzīgo metodi var izmantot arī lielo un mazo burtu tulkošanai.
kaķu demonstrācija.txt | tr [A-Z] [a-z]
Spēlēšanās ar cipariem
Mēs redzējām, kā tulkot lielos un mazos burtus, labi? Ir pienācis laiks spēlēt ar cipariem.
Izmantojot šo komandu, mēs varam viegli pārtulkot visus ciparus (0–9) to ekvivalentās rakstzīmēs!
kaķis demo_digit.txtkaķis demo_digit.txt | tr [0-9] [a-z]
Satriecošs! Kā būtu ar lielajiem burtiem?
kaķis demo_digit.txt | tr [0-9] [A-Z]
Vienkārši, tomēr interesanti, pareizi? Varam arī pārveidot rakstzīmes uz cipariem!
kaķu demo_lowercase.txtkaķu demo_lowercase.txt | tr [a-z] [0-9]
Ak, šķiet, ka lietas sabojājās, pareizi? Mēs varam izmantot tikai “a” līdz “j”, lai attēlotu viencipara skaitļus. Ja ir kāds raksturs, kas atrodas ārpus šīs saites, “tr” aizstās rakstzīmi ar “]”.
Dzēš rakstzīmes
Kā liecina oficiālais apraksts, “tr” var paveikt ne tikai rakstzīmju tulkošanu. Šajā piemērā mēs pārbaudīsim, kā izmantot “tr”, lai izdzēstu noteiktas rakstzīmes.
kaķis nejaušs.txt
Tagad izdzēsīsim visus numurus no satura.
kaķis nejaušs.txt | tr -d [0-9]
Šeit karodziņš “-d” norāda, ka “tr” ir jādzēš, un [0–9] apzīmē dzēšamos ciparus.
Mēs to varam izdarīt arī ar varoņiem. Šī komanda saglabās visus skaitļus, bet noņems visas rakstzīmes.
kaķis nejaušs.txt | tr -d [a-z]
Kā būtu, ja no faila noņemtu tikai vienu konkrētu rakstzīmi?
kaķu demo_lowercase.txtkaķu demo_lowercase.txt | tr -d 'y'
Tas no faila izdzēsa visus “y” ierakstus.
Saspiežot atkārtotas rakstzīmes
Ir reizes, kad raksturs tiek atkārtots secīgi. Ja jūs nodarbojaties ar šādiem kaitinošiem jautājumiem, vienkārši ļaujiet “tr” rūpēties par to! Izmantojot šādu komandu, jūs varat izspiest šādus gadījumus. Tas būtībā saglabā sākotnējo rakstzīmes parādīšanos un izdzēš papildu rakstzīmes.
Pirmkārt, laiks pārbaudīt, kā izskatās demonstrācijas fails.
kaķa dublikāts.txt
Tagad nododiet saturu “tr”.
kaķa dublikāts.txt | tr -s [: cipari:]
Šeit parametrs “-s” ir indikators, lai veiktu darbību “saspiest”.
Teikumu laušana / apvienošana
Apskatīsim demonstrācijas failu.
sikspārņu dublikāts.txt
Tajā ir teikums ar atstarpēm, kas dala vārdus, labi? Sadalīsim vārdus jaunās rindās.
kaķa dublikāts.txt | tr "" "\ n"
Šī komanda aizstāja visas atstarpes rakstzīmes ar jaunrindas rakstzīmēm.
Vēlreiz sapludināsim salauzto teikumu garajā teikumā.
sikspārņu dublikāts.txtkaķa dublikāts.txt | tr "\ n" ""
Rakstzīmju tulkošana
Tāpat kā mēs iepriekš tulkojām rakstzīmes, arī šoreiz mēs darīsim to pašu, bet tikai ar vienu rakstzīmi.
kaķu demonstrācija.txt
Šajā failā mainīsim visas jaunās līnijas rakstzīmes par semikolu.
kaķu demonstrācija.txt | tr "\ n" ";"
Man nācās to aptīt ap “atbalss”. Pretējā gadījumā tas radītu zināmu izvadi, jo pēdējais jaunās līnijas raksturs arī tiktu tulkots ar semikolu.
Ir atšķirīgs rakstzīmju maiņas veids. Tomēr šo ir grūtāk kontrolēt.
kaķa dublikāts.txtkaķa dublikāts.txt | tr -c 'd' 'z'
kaķa dublikāts.txt | tr -c 'd' 'z'
Oho! Apskatīsim to ap "atbalss", lai labāk izprastu rezultātu.
echo $ (kaķa dublikāts1.txt | tr -c 'd' 'z')
Kas te notika? Izmantojot “-c” karodziņu, “tr” nemainīs mērķa rakstzīmi. Neatbilstības gadījumā katrs otrais raksturs tiks pārveidots. Šeit jebkura rakstzīme, kas nav “b”, tika aizstāta ar “z”.
Stīgu tulkošana
“Tr” var strādāt arī ar stīgām. Veiksim virkņu nomaiņu.
kaķa dublikāts.txtkaķa dublikāts.txt | tr "duplicate" "not_duplicate"
Mana virkne, kas jāaizstāj, ir īsāka nekā virkne, ar kuru jāaizstāj, tāpēc tā nederēja.
Rakstzīmju kopas
Tagad esat pamanījis, ka ir daudz rakstzīmju kopu, ko atbalsta “tr”. Lai gan vairāki no tiem tika izmantoti iepriekš minētajos piemēros, citas rakstzīmju kopas arī ir diezgan noderīgas. Šeit ir visu atbalstīto rakstzīmju sarakstu saraksts.
POSIX rakstzīmju kopas
- [: cipars:]: cipari 0–9
- [: alfa:]: alfabēti a-z un A-Z.
- [: alnum:]: burtciparu rakstzīmes
- [: punct:]: Pieturzīmes
- [: atstarpe:]: jebkurš atstarpes rakstzīme, piemēram, atstarpe, cilne, FF, CR, NL, FF utt.
- [: augšējais:]: visi lielie alfabēti
- [: apakšējais:]: visi mazie alfabēti
- [: cntrl:]: visas vadības rakstzīmes (NL, CR, EXT, STX, ACK, SO, DC1, DC2, NAK, ETB, ESC, IS1, IS2, DEL utt.)
Papildu rakstzīmju kopas
- [A-Z]: visi lielie alfabēti
- [a-z]: visi mazie alfabēti
- [0-9]: visi cipari
Pēdējās domas
Ir daudz veidu, kā visas šīs “tr” funkcijas var dot labumu lietotājiem. Es vienmēr iesaku pārbaudīt visas pieejamās opcijas un padziļinātās rokasgrāmatas par jebkuru Linux rīku no viņu vīrieša, informācijas un palīdzības lapām, jo viņi var piedāvāt vērtīgākas zināšanas.
tr - palīdzībavīrietis tr
info tr
Izbaudi!