Märkide eemaldamine stringist Bashis

Removing Characters From String Bash

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.
Eraldi tegelase eemaldamine stringist1
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 2 erimärk

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 /^.//' faili

Kus (.) Vastab täpselt ühele tähemärgile ja (^) vastab mis tahes märgile stringi alguses.
Eemaldage stringist esimene märk

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 viimane märk

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 /.$//'

Eemaldage stringist esimene ja viimane märk

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 esimene märk

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 kaks esimest märki

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 . '

rmv viimane char frm string

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 kaks viimast märki

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 stringist nii esimene kui ka viimane märk

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.
rmv lõigatud -c

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.
Eemaldage stringist neli esimest 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-5

See käsk prindib stringi, alustades teisest ja viiendast tähemärgist, eemaldades samal ajal ülejäänud algus- ja lõpumärgid.
rmv 2. ja 5. c2

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- | rev

See 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.
02Eemalda stringist viimane märk

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- | rev

See 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.
rmv viimased neli märki

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- |rev

See 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.
rmv esimene ja viimane

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

eemaldage kõik juhtumid 01

Samamoodi, et eemaldada stringist kõik suurtähtede „H” esinemised, oleks käsk järgmine:

$viskas välja 'Tere kuidas sul läheb?' | NS -dH

Vä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:]

esinemised madalamad

$viskas välja 'Tere kuidas sul läheb?'| NS -d [: madalam:]

esineb ülemises osas

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'

esineb ülemist ja alumist

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).
esineb teatud vahemikku

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.