Mõnikord peate võib -olla stringist märgid eemaldama. Olenemata põhjusest, pakub Linux teile mitmesuguseid sisseehitatud ja käepäraseid tööriistu, mis võimaldavad teil Bashis olevast stringist märke eemaldada. See artikkel näitab teile, kuidas neid tööriistu kasutada stringide märkide eemaldamiseks.
Artiklis käsitletakse järgmist.
- Eemaldage string stringist, kasutades sed
- Eemaldage string stringist, kasutades funktsiooni awk
- Eemaldage stringist lõikamise abil märk
- Eemaldage string stringist, kasutades tr
Selles artiklis näidatud käsud täideti Ubuntu 20.04 Focal Fossa. Samu käske saab täita ka teiste Linuxi distributsioonide puhul, millel on ülaltoodud tööriistad saadaval. Käskude käivitamiseks kasutame vaikimisi rakendust Terminal. Rakendusele Terminal pääsete juurde, kasutades kiirklahvi Ctrl+Alt+T.
Eemaldage tähed stringist, kasutades sed
Sed on võimas ja mugav utiliit, mida kasutatakse tekstivoogude redigeerimiseks. See on mitteinteraktiivne tekstiredaktor, mis võimaldab teil sisendvoogudel põhilisi tekstitöötlusi teha. Sed abil saate ka stringidelt soovimatuid märke eemaldada.
Demonstreerimise eesmärgil kasutame näidisstringi ja suuname selle seejärel käsule sed.
Eemaldage stringist konkreetne märk
Sed abil saate stringist konkreetse märgi eemaldada. Näiteks stringist h eemaldamiseks Tere kuidas sul läheb? käsk oleks:
$viskas välja 'Tere kuidas sul läheb?' | sed 's/h //'See eemaldab ainult stringi esimese h -tähe.
Kõigi h -esinemiste eemaldamiseks stringist kasutage järgmist käsku:
$viskas välja 'Tere kuidas sul läheb?' | sed 's/h // g'
Kus g tähistab globaalset. See eemaldab stringist kõik „h” esinemised.
Eemaldage stringist esimene märk
Esimese märgi eemaldamiseks stringist Tere kuidas sul läheb? käsk oleks:
$viskas välja 'Tere kuidas sul läheb?' | sed 's /^.//' failiKus (.) Vastab täpselt ühele tähemärgile ja (^) vastab mis tahes märgile stringi alguses.
Eemaldage stringist viimane märk
Viimase märgi eemaldamiseks stringist Tere kuidas sul läheb? käsk oleks:
$viskas välja 'Tere kuidas sul läheb?' | sed 's /.$//'Kus ( . ) vastab täpselt ühele tähemärgile ja ($) vastab mis tahes märgile stringi lõpus.
Eemaldage stringist esimene ja viimane märk
Esimese ja viimase märgi eemaldamiseks stringist Tere kuidas sul läheb? käsk oleks:
$viskas välja 'Tere kuidas sul läheb?' | sed 's /^.//; s /.$//'
Märkide eemaldamine stringist, kasutades funktsiooni awk
Awk on võimas skriptikeel, mida kasutatakse mustrite sobitamiseks koos teksti töötlemisega. Awk võimaldab teil teksti mitmel viisil filtreerida ja muuta. Märkide eemaldamiseks stringidest saate kasutada ka funktsiooni awk.
Näitlikel eesmärkidel kasutame näidisstringi ja suuname selle seejärel käsule awk.
Eemaldage stringist esimene märk
Esimese märgi eemaldamiseks stringist Tere kuidas sul läheb? käsk oleks:
$viskas välja 'Tere kuidas sul läheb?' | awk '{print substr ($ 0, 2)}'Kus ($ 0) on kogu sihtstring ja (2) on tähemärgi lähtekoht. Ülaltoodud käsk eemaldab esimese märgi „h”, tähemärgi numbri „1” ja tagastab sihtmärgi stringi, mis algab teise märgiga „e”.
Eemaldage stringist kaks esimest märki
Samuti saate stringi algusest eemaldada teatud arvu märke. Näiteks stringi kahe esimese märgi eemaldamiseks Tere kuidas sul läheb? käsk oleks:
$viskas välja 'Tere kuidas sul läheb?' | awk '{print substr ($ 0, 3)}'Ülaltoodud käsk eemaldab kaks esimest märki, „tema” või märginumbrid „1 ja 2” ning tagastab sihtmärgi, mis algab märgi numbriga „3” või „l”.
Eemaldage stringist viimane märk
Viimase märgi eemaldamiseks Tere kuidas sul läheb? käsk oleks:
$viskas välja 'Tere kuidas sul läheb?' | awk '{print substr ($ 0, 1, length ($ 0) -1)}')Kus pikkus ($ 0) -1 tähendab mahaarvamist ' 1 'Tegelase kogupikkusest.
Ülaltoodud käsk prindib stringi, mis algab märgi numbriga ' 1 ' kuni pikkus ($ 0) -1 et eemaldada viimane tegelane.
Seal on ' 19 'Tähemärki (sh tühikuid) ülaltoodud stringi. Käsk hakkab printima kõiki märke, alustades tähemärgist ' 1 'Ja iseloomu järgi' 18 , 'Eemaldades samal ajal viimase märgi' 19 . '
Eemaldage stringist kaks viimast märki
Kahe viimase märgi eemaldamiseks Tere kuidas sul läheb? käsk oleks:
$viskas välja 'Tere kuidas sul läheb?' | awk '{print substr ($ 0, 1, length ($ 0) -2)}')Kus pikkus (0 dollarit) -2 tähendab mahaarvamist ' 2 'Tegelase kogupikkusest.
Ülaltoodud käsk prindib stringi, alustades märgi numbrist ' 1 'Ja kuni märgi numbrini' pikkus (0 dollarit) -2 , 'Stringi kahe viimase märgi eemaldamiseks.
Eemaldage stringist nii esimene kui ka viimane märk
Stringist nii esimese kui ka viimase märgi eemaldamiseks Tere kuidas sul läheb? käsk oleks:
$viskas välja 'Tere kuidas sul läheb?' | awk '{print substr ($ 0, 2, length ($ 0) - 2)}')Kus pikkus (0 dollarit) -2 tähendab mahaarvamist ' 2 'Tegelase kogupikkusest.
Ülaltoodud käsk prindib stringi, alustades märgi numbrist ' 2 'Kuni märgi numbrini' pikkus (0 dollarit) -2 , 'Esimese ja viimase märgi eemaldamiseks.
Eemaldage tähemärk stringilt lõikamise abil
Lõikamine on käsurea tööriist, mida tavaliselt kasutatakse tekstiosa eraldamiseks stringist või failist ja tulemuse printimiseks standardväljundisse. Seda käsku saate kasutada ka stringide märkide eemaldamiseks.
Näitlikel eesmärkidel kasutame näidisstringi ja suuname selle seejärel käsklusele cut.
Eemaldage stringist esimene märk
Stringist esimese märgi eemaldamiseks Tere kuidas sul läheb? käsk oleks:
$viskas välja 'Tere kuidas sul läheb?' | lõigatud -c 2-See käsk prindib stringi, alustades teisest märgist, eemaldades samal ajal esimese märgi.
Eemaldage stringist neli esimest märki
Esimese nelja märgi eemaldamiseks stringist Tere kuidas sul läheb? käsk oleks:
$viskas välja 'Tere kuidas sul läheb?' | lõigatud -c 5-See käsk prindib stringi, alustades viiendast tähemärgist, eemaldades samal ajal esimesed neli märki.
Prindi string 2. ja 5. tähemärgi vahel
Stringi printimiseks Tere kuidas sul läheb? teise ja viienda märgi vahel , käsk oleks:
$viskas välja 'Tere kuidas sul läheb?' | lõigatud -c 2-5See käsk prindib stringi, alustades teisest ja viiendast tähemärgist, eemaldades samal ajal ülejäänud algus- ja lõpumärgid.
Eemaldage stringist viimane märk
Viimase märgi eemaldamiseks stringist Tere kuidas sul läheb? kasuta lõigatud käsu abil rev , järgnevalt:
$viskas välja 'Tere kuidas sul läheb?' | rev | lõigatud -c2- | revSee käsk töötab kõigepealt stringi ümberpööramisel, seejärel esimese tähemärgi lõikamisel ja lõpuks selle uuesti pööramisel, et anda teile soovitud väljund.
Eemaldage stringist viimased neli märki
Viimaste nelja märgi eemaldamiseks realt Tere kuidas sul läheb? käsk oleks:
$viskas välja 'Tere kuidas sul läheb?' | rev | lõigatud -c5- | revSee käsk töötab kõigepealt stringi ümberpööramisel, seejärel esimese nelja tähemärgi lõikamisel ja seejärel soovitud väljundi saamiseks selle ümberpööramisel.
Eemaldage stringist esimene ja viimane märk
Esimese ja viimase märgi eemaldamiseks stringist Tere kuidas sul läheb? kasuta lõigatud käsu abil rev , järgnevalt:
$viskas välja 'Tere, Maailm!' | lõigatud -c2- | rev | lõigatud -c2- |revSee käsk lõikab esimese märgi, seejärel muudab stringi ümber ja lõikab selle esimese märgi ning seejärel pöörab selle uuesti, et saada soovitud väljund.
Eemaldage märk stringist, kasutades tr
Tr -käsku (lühend tõlkimiseks) kasutatakse stringi märkide tõlkimiseks, pigistamiseks ja kustutamiseks. Tr abil saate ka stringi märkide eemaldamiseks.
Näitlikel eesmärkidel kasutame näidistringi ja suuname selle seejärel käsule tr.
Eemaldage kõik tegelaskujud
Kasutades käsku tr, saate oma stringist eemaldada kõik väiketähtede või suurtähtede esinemised. Näiteks, et eemaldada stringist kõik väiketähtede „h” esinemised, oleks käsk järgmine:
$viskas välja 'Tere kuidas sul läheb?' | NS -dh
Samamoodi, et eemaldada stringist kõik suurtähtede „H” esinemised, oleks käsk järgmine:
$viskas välja 'Tere kuidas sul läheb?' | NS -dHVäikeste või suurte tähtede eemaldamiseks saate kasutada ka tõlgendatud järjestusi.
$viskas välja 'Tere kuidas sul läheb?'| NS -d [: ülemine:]$viskas välja 'Tere kuidas sul läheb?'| NS -d [: madalam:]
Eemaldage kõik väiketähtede ja suurtähtede esinemised
Samuti saate stringist eemaldada kõik nii väikeste kui ka suurte tähtede esinemised. Näiteks eemaldab järgmine käsk kõik tähe „h” esinemised, nii väiketähed kui ka suured tähed.
$viskas välja 'Tere kuidas sul läheb?' | NS -d'HH'
Eemaldage kõik märkide esinemised kindlas vahemikus
Kõigi märkide esinemiste eemaldamiseks stringist konkreetses vahemikus „d-h” oleks käsk järgmine:
$viskas välja 'Tere kuidas sul läheb?' | NS -d 'd-h'See käsk eemaldab stringi kõik tähemärgid vahemikus „d-h” (d, e, f, g, h).
Järeldus
Linuxis on lihtsa töö tegemiseks alati rohkem kui üks võimalus. Sama lugu on ka stringide märkide eemaldamisega. See artikkel näitas teile nelja erinevat viisi, kuidas seda teha, ja mõned näited soovimatute märkide eemaldamiseks stringist. Otsus, millist tööriista kasutada, sõltub teie eelistustest ja mis veelgi olulisem - sellest, mida soovite saavutada.