BASHi programmeerimine

Märkide eemaldamine Bashi stringist

Märkide eemaldamine Bashi stringist

Mõnikord peate võib-olla stringist tähemärgid eemaldama. Olenemata põhjusest, pakub Linux teile mitmesuguseid sisseehitatud ja käepäraseid tööriistu, mis võimaldavad teil Bashis stringist märke eemaldada. See artikkel näitab, kuidas nende tööriistade abil stringist märke eemaldada.

Artikkel käsitleb järgmist:

Selles artiklis näidatud käsud täideti Ubuntu 20-s.04 Focal Fossa. Samu käske saab teha ka teistes Linuxi distributsioonides, kus ülaltoodud tööriistad on saadaval. Kasutame käskude käitamiseks vaikerakendust Terminal. Rakendusele Terminal pääseb juurde, kasutades kiirklahve Ctrl + Alt + T.

Eemaldage stringist stringid, kasutades sed

Sed on võimas ja mugav utiliit, mida kasutatakse tekstivoogude muutmiseks. See on mitteinteraktiivne tekstiredaktor, mis võimaldab teil sisendvoogudes teha põhilisi teksti manipuleerimisi. Samuti saate sed abil soovimatud tähemärgid stringidest eemaldada.

Demonstreerimise eesmärgil kasutame näidisstringi ja juhime selle seejärel käsule sed.

Eemaldage stringist spetsiifiline märk

Sedi abil saate stringist eemaldada konkreetse märgi. Näiteks stringist „h” eemaldamiseksTere kuidas sul läheb?”Käsk oleks:

$ echo "tere, kuidas läheb?"| sed 's / h //"

See eemaldab stringis ainult esimese h-esinemise.

Kõigi h-i esinemiste eemaldamiseks stringist kasutage järgmist käsku:

$ echo "tere, kuidas läheb?"| sed 's / h // g'

Kus g tähistab globaalset. See eemaldab kõik h-i esinemised stringist.

Eemaldage stringist esimene märk

Esimese märgi eemaldamine stringist “Tere kuidas sul läheb?” käsk oleks:

$ echo "tere, kuidas läheb?"| sed 's / ^.// 'fail

Kus (.) sobib täpselt ühe tähemärgiga ja (^) sobib mis tahes märgiga stringi alguses.

Eemalda stringist viimane märk

Viimase märgi eemaldamine stringist “Tere kuidas sul läheb?” käsk oleks:

$ echo "tere, kuidas läheb?"| sed.$ // '

Kus (.) sobib täpselt ühe tähemärgiga ja ($) sobib mis tahes märgiga stringi lõpus.

Eemaldage stringist esimene ja viimane märk

Esimese ja viimase märgi eemaldamine stringist “Tere kuidas sul läheb?” käsk oleks:

$ echo "tere, kuidas läheb?"| sed 's / ^.//; s /.$ // '

Eemaldage stringidest stringid awk abil

Awk on võimas skriptikeel, mida kasutatakse mustri sobitamiseks koos tekstitöötlusega. Awk võimaldab teil teksti filtreerida ja teisendada mitmel viisil. Stringidest märkide eemaldamiseks võite kasutada ka awki.

Demonstreerimise eesmärgil kasutame stringi näidist ja sisestame selle seejärel käsule awk.

Eemaldage stringist esimene märk

Esimese märgi eemaldamine stringist “Tere kuidas sul läheb?” käsk oleks:

$ echo "tere, kuidas läheb?"| awk 'print substr ($ 0, 2)'

Kus ($ 0) on kogu sihtring ja (2) tähemärgi lähtepositsioon. Ülaltoodud käsk eemaldab esimese märgi 'h' tähemärgi numbri '1' ja tagastab teise tähega 'e' algava sihtstringi."

Eemaldage stringist kaks esimest märki

Samuti võite stringi algusest eemaldada kindla arvu tähemärke. Näiteks kahe esimese märgi eemaldamiseks stringist “Tere kuidas sul läheb?” käsk oleks:

$ echo "tere, kuidas läheb?"| awk 'print substr ($ 0, 3)'

Ülaltoodud käsk eemaldab kaks esimest tähemärki 'he' või märginumbrid '1 ja 2' ning tagastab sihtstringi, mis algab tähemärgiga '3' või 'l."

Eemalda stringist viimane märk

Viimase märgi eemaldamiseks loendistTere kuidas sul läheb?” käsk oleks:

$ echo "tere, kuidas läheb?"| awk 'print substraat ($ 0, 1, pikkus ($ 0) -1)'

Kus pikkus (0 dollarit) -1 tähendab mahaarvamist "1'kogu märgi pikkusest.

Ülaltoodud käsk prindib stringi tähemärgiga "1' kuni pikkus (0 dollarit) -1 viimase tegelase eemaldamiseks.

Seal on '19'tähemärgid (sh tühikud) ülaltoodud stringis. Käsk töötab kõigi märkide printimisega, alustades tähemärgist '1"ja kuni tähemärgini"18,"eemaldades viimase märgi"19."

Eemalda stringist kaks viimast tähemärki

Kahe viimase märgi eemaldamiseksTere kuidas sul läheb?”Käsk oleks:

$ echo "tere, kuidas läheb?"| awk 'print substraat ($ 0, 1, pikkus ($ 0) -2)'

Kus pikkus (0 dollarit) -2 tähendab mahaarvamist "2'kogu märgi pikkusest.

Ülaltoodud käsk prindib stringi, alustades tähemärgist '1"ja kuni tähemärgini"pikkus (0 dollarit) -2,', et eemaldada stringi kaks viimast tähemärki.

Eemaldage stringist nii esimene kui ka viimane tähemärk

Nii esimese kui ka viimase märgi eemaldamiseks stringist “Tere kuidas sul läheb?” käsk oleks:

$ echo "tere, kuidas läheb?"| awk 'print substraat ($ 0, 2, pikkus ($ 0) - 2)'

Kus pikkus (0 dollarit) -2 tähendab mahaarvamist "2'kogu märgi pikkusest.

Ülaltoodud käsk prindib stringi, alustades tähemärgist2"kuni tähemärgini"pikkus (0 dollarit) -2,'esimese ja viimase märgi eemaldamiseks.

Eemaldage stringist string, kasutades lõikamist

Lõika on käsurea tööriist, mida tavaliselt kasutatakse stringi või faili osa teksti väljavõtmiseks ja tulemuse printimiseks standardväljundisse. Seda käsku saate kasutada ka stringist märkide eemaldamiseks.

Demonstreerimise eesmärgil kasutame näidisstringi ja juhime selle siis käsule cut.

Eemaldage stringist esimene märk

Esimese tähemärgi eemaldamiseks stringist:Tere kuidas sul läheb?” käsk oleks:

$ echo "tere, kuidas läheb?"| lõigatud -c 2-

See käsk prindib stringi, alustades teisest märgist, eemaldades samas esimese märgi.

Eemaldage stringist esimesed neli märki

Esimese nelja märgi eemaldamine stringist “Tere kuidas sul läheb?” käsk oleks:

$ echo "tere, kuidas läheb?"| lõigatud -c 5-

See käsk prindib stringi, alustades viiendast märgist, eemaldades neli esimest märki.

2. ja 5. märgi vahelise stringi printimine

Stringi printimiseks “Tere kuidas sul läheb?” teise ja viienda märgi vahel, käsk oleks:

$ echo "tere, kuidas läheb?"| lõige -c 2-5

See käsk printib stringi, alustades teisest märgist kuni viienda märgini, eemaldades ülejäänud algus- ja lõpumärgid.

Eemalda stringist viimane märk

Viimase märgi eemaldamine stringist “Tere kuidas sul läheb?” kasuta lõigatud käsuga rev, järgnevalt:

$ echo "tere, kuidas läheb?"| rev | lõigatud -c2- | rev

See käsk töötab kõigepealt stringi ümberpööramise, siis esimese tähemärgi lõikamise ja lõpuks selle ümberpööramise, et anda teile soovitud väljund.

Eemalda stringist viimased neli märki

Nelja viimase märgi eemaldamine realt “Tere kuidas sul läheb?” käsk oleks:

$ echo "tere, kuidas läheb?"| rev | lõigatud -c5- | rev

See käsk toimib nii, et kõigepealt tühistatakse string, seejärel lõigatakse esimesed neli märki ja seejärel tagurpidi see uuesti, et anda teile soovitud väljund.

Eemaldage stringist esimene ja viimane tähemärk

Esimese ja viimase märgi eemaldamine stringist “Tere kuidas sul läheb?” kasuta lõigatud käsuga rev, järgnevalt:

$ echo "tere maailm!"| cut -c2- | rev | cut -c2- | rev

See käsk töötab esimese tähemärgi lõikamise, stringi ümberpööramise ja selle esimese tähemärgi ümberpööramise ning seejärel uuesti vastupidi, et saada soovitud väljund.

Eemaldage stringist string, kasutades tr

Tr-käsku (lühend tõlkimiseks) kasutatakse stringide märkide tõlkimiseks, pigistamiseks ja kustutamiseks. Märgistuste eemaldamiseks stringist saab kasutada ka klahvi tr.

Demonstreerimise eesmärgil kasutame näidistringi ja juhime selle seejärel käsule tr.

Eemaldage kõik märgi esinemised

Kasutades käsku tr, saate stringist eemaldada kõik väikeste või suurte tähtede esinemised. Näiteks kõigi väiketähe „h” esinemiste eemaldamiseks stringist oleks käsk järgmine:

$ echo "Tere, kuidas läheb?"| tr -d h

Samamoodi oleks kõigi suurtähtede H esinemiste eemaldamiseks stringist käsk järgmine:

$ echo "Tere, kuidas läheb?"| tr-d H

Tõlgendatud järjestusi saate kasutada ka väikeste ja väikeste tähtede eemaldamiseks

$ echo "Tere, kuidas läheb?"| tr -d [: ülemine:]

$ kaja "Tere, kuidas läheb?"| tr -d [: madalam:]

Eemaldage kõik väiketähtede ja suurtähtede esinemised

Samuti võite stringist eemaldada kõik nii väikeste kui ka väikeste tähemärkide esinemised. Näiteks eemaldab järgmine käsk kõik tähemärgi „h” esinemised, nii väikesed kui ka suured.

$ echo "Tere, kuidas läheb?"| tr -d 'hH'

Eemaldage kõik kindlas vahemikus olevad märgid

Kõigi tähemärkide esinemise eemaldamiseks stringist konkreetses vahemikus 'd-h' oleks järgmine käsk:

$ echo "tere, kuidas läheb?"| tr -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öö saavutamiseks alati rohkem kui üks viis. Sama lugu on 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 kõik kasutada, sõltub teie eelistustest ja, mis veelgi olulisem, sellest, mida soovite saavutada.

Hiire vasakklõps nupp ei tööta Windows 10-s
Kui kasutate oma sülearvuti või lauaarvutiga spetsiaalset hiirt, kuid hiire vasakklõps nupp ei tööta mingil põhjusel operatsioonisüsteemis Windows 10/...
Kursor hüppab või liigub juhuslikult Windows 10-s kirjutamise ajal
Kui leiate, et hiire kursor hüppab või liigub Windowsi sülearvutisse või arvutisse kirjutades automaatselt, juhuslikult, võivad mõned neist soovituste...
Kuidas muuta hiire ja puuteplaatide kerimise suund Windows 10-s ümber
Hiir ja PuuteplaatNeed muudavad arvutamise mitte ainult lihtsaks, vaid ka tõhusamaks ja vähem aeganõudvaks. Me ei kujuta ette elu ilma nende seadmetet...