Remiantis oficialiu aprašymu, lengva suprasti šio įrankio vertę. „Linux“ pateikia didelę integruotų įrankių kolekciją. Yra keletas specialių, kurie yra labai naudingi manipuliuojant tekstu. Mes jau apėmėme keletą tokių, kaip „Vim“, „Nano“, „awk“, „sed“ ir kitus įrankius.
Tie, kurie reguliariai dirba su tekstais, „tr“ tikrai bus tikrai labai naudingi. Šiame straipsnyje bus paaiškinta dažniausiai vartojama „tr“ ir pateikiama pakankamai pavyzdžių.
Pastaba: pamokoje bus naudojama daugybė atsitiktinio turinio manekenių failų. Visas atsitiktines eilutes sukuria Atsitiktinis.org.
Vieta
kuri tr
Tai yra visas „tr“ komandų įrankio kelias.
Pagrindinis naudojimas
Norėdami naudoti „tr“ įrankį, turite naudoti šią komandų struktūrą.
trYra įvairių variantų ir būdų, kaip manipuliuoti tekstais naudojant „tr“. Iš pradžių patikrinkime šį demonstracinį failą.
katės demonstracija.txt
Visi simboliai yra mažosiomis raidėmis, dešinėje? Paverskime juos didžiosiomis raidėmis!
katės demonstracija.txt | tr [: apatinis:] [: viršutinis:]
Čia pirmasis „tr“ parametras nurodo atlikti vertimą visiems įvesties mažosioms raidėms. Antroje dalyje sakoma, kaip išvestyje juos paversti didžiosiomis raidėmis.
Dabar darykime atvirkščiai.
katės demonstracija.txtkatės demonstracija.txt | tr [: viršutinė:] [: apatinė:]
Taip pat yra kitas būdas atlikti tą pačią užduotį. Patikrinkime.
katės demonstracija.txt | tr [a-z] [A-Z]
Užuot liepę „tr“ išversti didžiąsias į mažąsias arba mažąsias į didžiąsias, liepėme identifikuoti įrašus, atitinkančius diapazoną nuo „a“ iki „z“, ir išversti į jų atitikmenį nuo diapazono „A“ iki „Z“.
Šis panašus metodas taip pat gali būti naudojamas išversti didžiąsias į mažąsias.
katės demonstracija.txt | tr [A-Z] [a-z]
Žaidimas su skaičiais
Mes pamatėme, kaip iš didžiųjų raidžių išversti į mažąsias, dešinėje? Atėjo laikas pažaisti su skaitmenimis.
Naudodami šią komandą, mes galime lengvai išversti visus skaitmenis (0–9) į jų atitikmenis!
katės demo_digit.txtkatės demo_digit.txt | tr [0-9] [a-z]
Nuostabu! Kaip su didžiosiomis raidėmis?
katės demo_digit.txt | tr [0-9] [A-Z]
Paprasta, tačiau įdomi, teisinga? Taip pat galime pakeisti simbolius skaitmenimis!
katės demo_lowercase.txtkatės demo_lowercase.txt | tr [a-z] [0–9]
Oi, atrodo, kad viskas sugedo, tiesa? Na, mes galime naudoti tik „a“ - „j“, kad atspindėtume vienženklius skaitmenis. Jei yra koks nors simbolis, kuris nepatenka į šią ribą, „tr“ pakeis simbolį į „].
Ištrinami simboliai
Kaip rodo oficialus aprašymas, „tr“ gali ne tik išversti simbolius. Šiame pavyzdyje mes patikrinsime, kaip naudoti „tr“ tam, kad ištrintumėte tam tikrus simbolius.
katė atsitiktinė.txt
Ištrinkime visus numerius iš turinio.
katė atsitiktinė.txt | tr -d [0–9]
Čia „-d“ vėliava reiškia „tr“ ištrinti ir [0–9] žyminčius ištrinti skaitmenis.
Tai galime padaryti ir su personažais. Ši komanda išsaugos visus skaičius, bet pašalins visus simbolius.
katė atsitiktinė.txt | tr -d [a-z]
Kaip iš failo pašalinti tik vieną konkretų simbolį?
katės demo_lowercase.txtkatės demo_lowercase.txt | tr -d 'y'
Iš failo ištrinti visi „y“ įrašai.
Pakartotinių veikėjų gniuždymas
Yra atvejų, kai personažas kartojamas iš eilės. Jei sprendžiate tokius erzinančius klausimus, tiesiog leiskite „tr“ tuo pasirūpinti! Naudodami šią komandą, galite išspausti tokius įvykius. Iš esmės jis išlaiko pradinį simbolio atsiradimą ir pašalina papildomus.
Pirma, laikas patikrinti, kaip atrodo demonstracinis failas.
katės dublikatas.txt
Dabar perduokite turinį „tr“.
katės dublikatas.txt | tr -s [: skaitmenys:]
Čia parametras „-s“ yra veiksmas „išspausti“.
Sakinių laužymas / sujungimas
Peržiūrėkime demonstracinį failą.
šikšnosparnio dublikatas.txt
Jame yra sakinys su tarpais, dalijančiais žodžius, dešinė? Padalinkime žodžius į naujas eilutes.
katės dublikatas.txt | tr "" "\ n"
Ši komanda pakeitė visus tarpo simbolius naujos eilutės simboliais.
Suardykime sulaužytą sakinį vėl į ilgą sakinį.
šikšnosparnio dublikatas.txtkatės dublikatas.txt | tr "\ n" ""
Versti simbolius
Kaip ir anksčiau išvertėme simbolius, šį kartą atliksime tą patį, bet tik su vienu simboliu.
katės demonstracija.txt
Šiame faile pakeiskime visus naujos eilutės simbolius kabliataškiu.
katės demonstracija.txt | tr "\ n" ";"
Aš turėjau apvynioti „aidą“. Priešingu atveju tai sukurtų tam tikrą išvestį, nes paskutinis naujos eilutės simbolis taip pat būtų išverstas į kabliataškį.
Yra kitoks simbolių keitimo būdas. Tačiau šį sunku kontroliuoti.
katės dublikatas.txtkatės dublikatas.txt | tr -c 'd' 'z'
katės dublikatas.txt | tr -c 'd' 'z'
Oho! Apvyniokime „aidą“, kad geriau suprastume išvestį.
echo $ (katės dublikatas1.txt | tr -c 'd' 'z')
Kas čia atsitiko? Naudojant „-c“ vėliavą, „tr“ tik pakeis tikslinį simbolį. Neatitikimo atveju kiekvienas kitas personažas bus transformuotas. Čia bet koks simbolis, išskyrus „b“, buvo pakeistas „z“.
Stygų vertimas
„Tr“ taip pat gali dirbti su stygomis. Atlikime stygų pakeitimą.
katės dublikatas.txtkatės dublikatas.txt | tr "duplicate" "not_duplicate"
Mano pakeista eilutė yra trumpesnė nei eilutė, kuria reikia pakeisti, todėl ji netiko.
Simbolių rinkiniai
Dabar pastebėjote, kad yra daug simbolių, kuriuos palaiko „tr“. Nors kai kurie iš jų buvo naudojami aukščiau pateiktuose pavyzdžiuose, kiti simbolių rinkiniai taip pat yra naudingi. Čia pateikiamas visų palaikomų simbolių sąrašas.
POSIX simbolių rinkiniai
- [: skaitmuo:]: 0–9 skaitmenys
- [: alfa:]: abėcėlės a-z ir A-Z.
- [: alnum:]: raidiniai ir skaitiniai simboliai
- [: punct:]: skyrybos simboliai
- [: tarpas:]: bet koks tarpas, pvz., tarpas, skirtukas, FF, CR, NL, FF ir kt.
- [: viršutinė:]: visos didžiosios abėcėlės
- [: mažesnė:]: visos mažosios raidės
- [: cntrl:]: visi valdymo simboliai (NL, CR, EXT, STX, ACK, SO, DC1, DC2, NAK, ETB, ESC, IS1, IS2, DEL ir kt.)
Papildomi simbolių rinkiniai
- [A-Z]: visos didžiosios abėcėlės
- [a-z]: visos mažosios raidės
- [0–9]: visi skaitmenys
Paskutinės mintys
Yra daugybė būdų, kaip visos šios „tr“ savybės gali būti naudingos vartotojams. Aš visada rekomenduoju patikrinti visas galimas „Linux“ įrankio galimybes ir išsamius vadovus iš jų vyro, informacijos ir pagalbos puslapių, nes jie gali pasiūlyti daugiau vertingų žinių.
tr --pagalbavyras tr
info tr
Mėgautis!