Odstranjevanje znakov iz niza v bashu

Removing Characters From String Bash



Včasih boste morda morali odstraniti znake iz niza. Ne glede na razlog, vam Linux ponuja različna vgrajena, priročna orodja, ki omogočajo odstranjevanje znakov iz niza v Bashu. Ta članek vam prikazuje, kako s temi orodji odstranite znake iz niza.

Članek obravnava, kako narediti naslednje:







  • Odstranite znak iz niza z uporabo sed
  • Odstranite znak iz niza s pomočjo awk
  • Odstranite znak iz niza z rezom
  • Odstranite znak iz niza s tr

Ukazi, prikazani v tem članku, so bili izvedeni v Ubuntu 20.04 Focal Fossa. Iste ukaze lahko izvedete tudi v drugih distribucijah Linuxa, ki imajo na voljo zgornja orodja. Za izvajanje ukazov bomo uporabili privzeto aplikacijo Terminal. Do aplikacije Terminal lahko dostopate s bližnjico na tipkovnici Ctrl+Alt+T.



Odstranite znake iz niza z uporabo sed

Sed je zmogljiv in priročen pripomoček za urejanje tokov besedila. To je neinteraktivni urejevalnik besedil, ki vam omogoča izvajanje osnovnih besedilnih manipulacij na vnosnih tokovih. Sede lahko uporabite tudi za odstranjevanje neželenih znakov iz nizov.



Za predstavitvene namene bomo uporabili vzorčni niz in ga nato prenesli v ukaz sed.





Odstranite določen znak iz niza

Z uporabo sed lahko iz niza odstranite določen znak. Na primer, da odstranite h iz niza Živjo kako si? ukaz bi bil:

$vrgel ven 'Živjo kako si?' | sed 's/h //'

S tem boste odstranili samo prvi pojav 'h' v nizu.
Odstranite določen znak iz niza1
Če želite odstraniti vse pojavitve 'h' iz niza, uporabite naslednji ukaz:



$vrgel ven 'Živjo kako si?' | sed 's/h // g'

Kje g pomeni globalno. Odstranil bo vse pojavitve 'h' v nizu.
Odstranite določen znak iz niza2

Odstranite prvi znak iz niza

Če želite odstraniti prvi znak iz niza Živjo kako si? ukaz bi bil:

$vrgel ven 'Živjo kako si?' | sed 's /^.//' mapa

Kjer se (.) Ujema z enim samim znakom in (^) se ujema s katerim koli znakom na začetku niza.
Odstranite prvi znak iz niza

Odstrani zadnji znak iz niza

Če želite odstraniti zadnji znak iz niza Živjo kako si? ukaz bi bil:

$vrgel ven 'Živjo kako si?' | sed 's /.$//'

Kje ( . ) se ujema z enim samim znakom in ($) se ujema s katerim koli znakom na koncu niza.
Odstrani zadnji znak iz niza

Odstranite prvi in ​​zadnji znak iz niza

Če želite odstraniti prvi in ​​zadnji znak iz niza Živjo kako si? ukaz bi bil:

$vrgel ven 'Živjo kako si?' | sed 's /^.//; s /.$//'

Odstranite prvi in ​​zadnji znak iz niza

Odstranite znake iz niza z uporabo awk

Awk je zmogljiv skriptni jezik, ki se uporablja za ujemanje vzorcev skupaj z obdelavo besedila. Awk vam omogoča filtriranje in spreminjanje besedila na različne načine. Za odstranitev znakov iz nizov lahko uporabite tudi awk.

Za predstavitvene namene bomo uporabili vzorčni niz in ga nato prenesli v ukaz awk.

Odstranite prvi znak iz niza

Če želite odstraniti prvi znak iz niza Živjo kako si? ukaz bi bil:

$vrgel ven 'Živjo kako si?' | awk '{print substr ($ 0, 2)}'

Kjer je ($ 0) celoten ciljni niz in (2) začetni položaj znaka. Zgornji ukaz odstrani prvi znak 'h', številko znaka '1' in vrne ciljni niz, ki se začne z drugim znakom, 'e'.
Odstranite prvi znak iz niza

Odstranite prva dva znaka iz niza

Prav tako lahko odstranite določeno število znakov z začetka niza. Na primer, da odstranite prva dva znaka iz niza Živjo kako si? ukaz bi bil:

$vrgel ven 'Živjo kako si?' | awk '{print substr ($ 0, 3)}'

Zgornji ukaz bo odstranil prva dva znaka, 'on' ali številki znakov '1 in 2', in vrnil ciljni niz, ki se začne s številko znaka '3' ali 'l'.
Odstranite prva dva znaka iz niza

Odstrani zadnji znak iz niza

Če želite odstraniti zadnji znak iz Živjo kako si? ukaz bi bil:

$vrgel ven 'Živjo kako si?' | awk '{print substr ($ 0, 1, length ($ 0) -1)}')

Kje dolžina ($ 0) -1 pomeni odšteti ' 1 'Od skupne dolžine znakov.

Zgornji ukaz bo natisnil niz, ki se začne s številko znaka ' 1 'Do dolžina ($ 0) -1 da odstranite zadnji znak.

Obstajajo ' 19 “(Vključno s presledki) v zgornjem nizu. Ukaz bo deloval tako, da bo natisnil vse znake, začenši z znakom ' 1 'In do značaja' 18 , 'Med odstranjevanjem zadnjega znaka' 19 . '

rmv zadnji niz frm niz

Odstranite zadnja dva znaka iz niza

Če želite odstraniti zadnja dva znaka iz Živjo kako si? ukaz bi bil:

$vrgel ven 'Živjo kako si?' | awk '{print substr ($ 0, 1, length ($ 0) -2)}')

Kje dolžina (0 USD) -2 pomeni odšteti ' 2 'Od skupne dolžine znakov.

Zgornji ukaz bo natisnil niz, ki se začne s številko znaka ' 1 'In do številke znaka' dolžina (0 USD) -2 , 'Za odstranitev zadnjih dveh znakov v nizu.
Odstranite zadnja dva znaka iz niza

Odstranite prvi in ​​zadnji znak iz niza

Če želite odstraniti prvi in ​​zadnji znak iz niza Živjo kako si? ukaz bi bil:

$vrgel ven 'Živjo kako si?' | awk '{print substr ($ 0, 2, length ($ 0) - 2)}')

Kje dolžina (0 USD) -2 pomeni odšteti ' 2 'Od skupne dolžine znakov.

Zgornji ukaz bo natisnil niz, ki se začne s številko znaka ' 2 'Do številke znaka' dolžina (0 USD) -2 , ', Da odstranite prvi in ​​zadnji znak.

Odstranite prvi in ​​zadnji znak iz niza

Odstranite znak iz niza z uporabo cut

Cut je orodje ukazne vrstice, ki se običajno uporablja za ekstrahiranje dela besedila iz niza ali datoteke in izpis rezultata na standardni izhod. Ta ukaz lahko uporabite tudi za odstranjevanje znakov iz niza.

Za predstavitvene namene bomo uporabili vzorčni niz in ga nato prenesli v ukaz cut.

Odstranite prvi znak iz niza

Če želite odstraniti prvi znak iz niza, Živjo kako si? ukaz bi bil:

$vrgel ven 'Živjo kako si?' | rezati -c 2-

Ta ukaz bo natisnil niz, ki se začne z drugim znakom, hkrati pa odstrani prvi znak.
rmv cut -c

Odstranite prve štiri znake iz niza

Če želite odstraniti prve štiri znake iz niza Živjo kako si? ukaz bi bil:

$vrgel ven 'Živjo kako si?' | rezati -c 5-

Ta ukaz bo natisnil niz, ki se začne od petega znaka, pri tem pa odstrani prve štiri znake.
Odstranite prve štiri znake iz niza

Niz tiskanja med 2. in 5. znakom

Za tiskanje niza Živjo kako si? med drugim in petim znakom , ukaz bi bil:

$vrgel ven 'Živjo kako si?' | rezati -c 2-5

Ta ukaz bo natisnil niz, ki se začne od drugega znaka do petega znaka, hkrati pa odstrani preostale začetne in končne znake.
rmv 2. in 5. c2

Odstrani zadnji znak iz niza

Če želite odstraniti zadnji znak iz niza Živjo kako si? uporabi rezati ukaz z rev , kot sledi:

$vrgel ven 'Živjo kako si?' | rev | rezati -c2- | rev

Ta ukaz deluje tako, da najprej obrnete niz, nato izrežete prvi znak in ga na koncu znova obrnete, da dobite želeni izhod.
02 Odstranite zadnji znak iz niza

Odstrani zadnje štiri znake iz niza

Za odstranitev zadnjih štirih znakov iz vrstice Živjo kako si? ukaz bi bil:

$vrgel ven 'Živjo kako si?' | rev | rezati -c5- | rev

Ta ukaz deluje tako, da najprej obrnete niz, nato izrežete prve štiri znake in ga nato znova obrnete, da dobite želeni izhod.
rmv zadnji štirje znaki

Odstranite prvi in ​​zadnji znak iz niza

Če želite odstraniti prvi in ​​zadnji znak iz niza Živjo kako si? uporabi rezati ukaz z rev , kot sledi:

$vrgel ven 'Pozdravljen, svet!' | rezati -c2- | rev | rezati -c2- |rev

Ta ukaz deluje tako, da izreže prvi znak, nato obrne niz in izreže njegov prvi znak ter ga nato znova obrne, da dobite želeni izhod.
rmv prvi in ​​zadnji

Odstranite znak iz niza z uporabo tr

Ukaz tr (okrajšava za prevod) se uporablja za prevajanje, stiskanje in brisanje znakov iz niza. Za odstranitev znakov iz niza lahko uporabite tudi tr.

Za predstavitvene namene bomo uporabili vzorčni niz in ga nato prenesli v ukaz tr.

Odstranite vse pojavnosti znakov

Z ukazom tr lahko iz niza odstranite vse pojavljanje malih ali velikih črk. Na primer, če želite odstraniti vse pojavitve male črke 'h' iz niza, bi bil ukaz naslednji:

$vrgel ven 'Živjo kako si?' | NS -dh

odstrani vse dogodke 01

Podobno bi bil ukaz za odstranitev vseh pojavitev velike črke 'H' iz niza:

$vrgel ven 'Živjo kako si?' | NS -dH

Z razlaganimi zaporedji lahko odstranite tudi male ali velike črke:

$vrgel ven 'Živjo kako si?'| NS -d [: zgornji:]

pojavnosti nižje

$vrgel ven 'Živjo kako si?'| NS -d [: spodaj:]

pojavljanja zgoraj

Odstranite vse pojavitve malih in velikih črk

Iz niza lahko odstranite tudi vse pojavitve malih in velikih črk. Na primer, naslednji ukaz bo odstranil vse pojavitve znaka 'h', tako male kot velike črke.

$vrgel ven 'Živjo kako si?' | NS -d'HH'

pojav zgoraj in spodaj

Odstranite vse pojavitve znakov v določenem obsegu

Če želite odstraniti vse pojavitve znakov iz niza v določenem obsegu 'd-h', bi bil ukaz naslednji:

$vrgel ven 'Živjo kako si?' | NS -d 'd-h'

Ta ukaz bo odstranil vse znake v obsegu 'd-h' (d, e, f, g, h) v nizu.
pojavnosti določeno območje

Zaključek

V Linuxu bo vedno na voljo več načinov za preprosto delo. Enako velja za odstranitev znakov iz niza. Ta članek vam je pokazal štiri različne načine, skupaj z nekaj primeri za odstranjevanje neželenih znakov iz niza. Odločitev, katero orodje boste uporabili, je odvisna od vaših želja in, kar je še pomembneje, od tega, kaj želite doseči.