Rakstzīmju noņemšana no virknes Bash

Removing Characters From String Bash



Dažreiz jums var būt nepieciešams noņemt rakstzīmes no virknes. Lai kāds būtu iemesls, Linux piedāvā dažādus iebūvētus, ērtus rīkus, kas ļauj noņemt rakstzīmes no virknes Bash. Šajā rakstā ir parādīts, kā izmantot šos rīkus, lai noņemtu rakstzīmes no virknes.

Rakstā ir aprakstīts, kā veikt šādas darbības:







  • Noņemiet rakstzīmi no virknes, izmantojot sed
  • Noņemiet rakstzīmi no virknes, izmantojot awk
  • Noņemiet rakstzīmi no virknes, izmantojot izgriezumu
  • Noņemiet rakstzīmi no virknes, izmantojot tr

Šajā rakstā parādītās komandas tika izpildītas Ubuntu 20.04 Focal Fossa. Tās pašas komandas var izpildīt arī citos Linux izplatījumos, kuriem ir pieejami iepriekš minētie rīki. Lai palaistu komandas, mēs izmantosim noklusējuma lietojumprogrammu Terminal. Programmai Terminal varat piekļūt, izmantojot īsinājumtaustiņu Ctrl+Alt+T.



Noņemiet rakstzīmes no virknes, izmantojot sed

Sed ir spēcīga un ērta utilīta, ko izmanto teksta straumju rediģēšanai. Tas ir neinteraktīvs teksta redaktors, kas ļauj ievades plūsmās veikt pamata teksta manipulācijas. Varat arī izmantot sed, lai noņemtu nevēlamās rakstzīmes no virknēm.



Demonstrēšanas nolūkos mēs izmantosim virknes paraugu un pēc tam pievienosim to komandai sed.





Noņemiet īpašo rakstzīmi no virknes

Izmantojot sed, jūs varat noņemt noteiktu rakstzīmi no virknes. Piemēram, lai noņemtu h no virknes Sveiks kā tev iet? pavēle ​​būtu šāda:

$izmest ārā 'Sveiks kā tev iet?' | sed 's/h //'

Tādējādi virknē tiks noņemts tikai pirmais “h” gadījums.
Noņemiet īpašo rakstzīmi no virknes1
Lai no virknes noņemtu visus “h” gadījumus, izmantojiet šādu komandu:



$izmest ārā 'Sveiks kā tev iet?' | sed 's/h // g'

Kur g apzīmē globālu. Tas noņems visus “h” gadījumus virknē.
Noņemiet īpašo rakstzīmi no virknes2

Noņemiet pirmo rakstzīmi no virknes

Lai noņemtu pirmo rakstzīmi no virknes Sveiks kā tev iet? pavēle ​​būtu šāda:

$izmest ārā 'Sveiks kā tev iet?' | sed 's /^.//' failu

Kur (.) Atbilst precīzi vienai rakstzīmei un (^) atbilst jebkurai rakstzīmei virknes sākumā.
Noņemiet pirmo rakstzīmi no virknes

Noņemiet pēdējo rakstzīmi no virknes

Lai noņemtu pēdējo rakstzīmi no virknes Sveiks kā tev iet? pavēle ​​būtu šāda:

$izmest ārā 'Sveiks kā tev iet?' | sed 's /.$//'

Kur ( . ) precīzi atbilst vienai rakstzīmei un ($) atbilst jebkurai rakstzīmei virknes beigās.
Noņemiet pēdējo rakstzīmi no virknes

Noņemiet pirmo un pēdējo rakstzīmi no virknes

Lai noņemtu pirmo un pēdējo rakstzīmi no virknes Sveiks kā tev iet? pavēle ​​būtu šāda:

$izmest ārā 'Sveiks kā tev iet?' | sed 's /^.//; s /.$//'

Noņemiet pirmo un pēdējo rakstzīmi no virknes

Noņemiet rakstzīmes no virknes, izmantojot awk

Awk ir spēcīga skriptu valoda, ko izmanto modeļu saskaņošanai, kā arī teksta apstrādei. Awk ļauj filtrēt un pārveidot tekstu dažādos veidos. Varat arī izmantot awk, lai noņemtu rakstzīmes no virknēm.

Demonstrēšanas nolūkos mēs izmantosim virknes paraugu un pēc tam pievienosim to komandai awk.

Noņemiet pirmo rakstzīmi no virknes

Lai noņemtu pirmo rakstzīmi no virknes Sveiks kā tev iet? pavēle ​​būtu šāda:

$izmest ārā 'Sveiks kā tev iet?' | awk '{drukāt apakšstruktūru ($ 0, 2)}'

Kur ($ 0) ir visa mērķa virkne un (2) ir rakstzīmes sākuma pozīcija. Iepriekš minētā komanda noņem pirmo rakstzīmi “h”, rakstzīmes numuru “1” un atgriež mērķa virkni, kas sākas ar otro rakstzīmi “e”.
Noņemiet pirmo rakstzīmi no virknes

Noņemiet pirmās divas rakstzīmes no virknes

No virknes sākuma varat arī noņemt noteiktu rakstzīmju skaitu. Piemēram, lai noņemtu pirmās divas rakstzīmes no virknes Sveiks kā tev iet? pavēle ​​būtu šāda:

$izmest ārā 'Sveiks kā tev iet?' | awk '{drukāt apakšstruktūru (0, 3 ASV dolāri)}'

Iepriekš minētā komanda noņems pirmās divas rakstzīmes, “viņš” vai rakstzīmju ciparus “1 un 2”, un atgriezīs mērķa virkni, kas sākas ar rakstzīmes numuru “3” vai “l”.
Noņemiet pirmās divas rakstzīmes no virknes

Noņemiet pēdējo rakstzīmi no virknes

Lai noņemtu pēdējo rakstzīmi no Sveiks kā tev iet? pavēle ​​būtu šāda:

$izmest ārā 'Sveiks kā tev iet?' | awk '{drukāt apakšstruktūru ($ 0, 1, garums ($ 0) -1)}')

Kur garums (0 USD) -1 nozīmē atskaitīt ' 1 'No kopējā rakstzīmju garuma.

Iepriekš minētā komanda drukās virkni, kas sākas ar rakstzīmes numuru ' 1 ' līdz garums (0 USD) -1 lai noņemtu pēdējo rakstzīmi.

Tur ir ' 19 Rakstzīmes (ieskaitot atstarpes) iepriekšējā virknē. Komanda darbosies, izdrukājot visas rakstzīmes, sākot ar rakstzīmi ' 1 'Un līdz raksturam' 18 , 'Noņemot pēdējo rakstzīmi' 19 . ”

rmv pēdējā char frm virkne

Noņemiet pēdējās divas rakstzīmes no virknes

Lai noņemtu pēdējās divas rakstzīmes no Sveiks kā tev iet? pavēle ​​būtu šāda:

$izmest ārā 'Sveiks kā tev iet?' | awk '{drukāt apakšstruktūru ($ 0, 1, garums ($ 0) -2)}'

Kur garums (0 USD) -2 nozīmē atskaitīt ' 2 'No kopējā rakstzīmju garuma.

Iepriekš minētā komanda drukās virkni, sākot ar rakstzīmes numuru ' 1 'Un līdz rakstzīmes numuram' garums (0 USD) -2 , ”, Lai noņemtu virknes pēdējās divas rakstzīmes.
Noņemiet pēdējās divas rakstzīmes no virknes

Noņemiet gan pirmo, gan pēdējo rakstzīmi no virknes

Lai no virknes noņemtu gan pirmās, gan pēdējās rakstzīmes Sveiks kā tev iet? pavēle ​​būtu šāda:

$izmest ārā 'Sveiks kā tev iet?' | awk '{drukas apakšstruktūra (0, 2 ASV dolāri, garums (0 ASV dolāri) - 2)}'

Kur garums (0 USD) -2 nozīmē atskaitīt ' 2 'No kopējā rakstzīmju garuma.

Iepriekš minētā komanda drukās virkni, sākot ar rakstzīmes numuru ' 2 'Līdz rakstzīmes numuram' garums (0 USD) -2 , ”, Lai noņemtu pirmo un pēdējo rakstzīmi.

Noņemiet gan pirmo, gan pēdējo rakstzīmi no virknes

Noņemiet rakstzīmi no virknes, izmantojot griezumu

Izgriezt ir komandrindas rīks, ko parasti izmanto, lai izvilktu teksta daļu no virknes vai faila un izdrukātu rezultātu standarta izvadē. Šo komandu varat izmantot arī rakstzīmju noņemšanai no virknes.

Demonstrēšanas nolūkos mēs izmantosim virknes paraugu un pēc tam pievienosim to komandai cut.

Noņemiet pirmo rakstzīmi no virknes

Lai no virknes noņemtu pirmo rakstzīmi, Sveiks kā tev iet? pavēle ​​būtu šāda:

$izmest ārā 'Sveiks kā tev iet?' | griezt -c 2-

Šī komanda drukās virkni, sākot ar otro rakstzīmi, vienlaikus noņemot pirmo rakstzīmi.
rmv griezums -c

Noņemiet pirmās četras rakstzīmes no virknes

Lai no virknes noņemtu pirmās četras rakstzīmes Sveiks kā tev iet? pavēle ​​būtu šāda:

$izmest ārā 'Sveiks kā tev iet?' | griezt -c 5-

Šī komanda drukās virkni, sākot no piektās rakstzīmes, vienlaikus noņemot pirmās četras rakstzīmes.
Noņemiet pirmās četras rakstzīmes no virknes

Drukas virkne starp 2. un 5. rakstzīmi

Lai izdrukātu virkni Sveiks kā tev iet? starp otro un piekto rakstzīmi , pavēle ​​būtu šāda:

$izmest ārā 'Sveiks kā tev iet?' | griezt -c 2-5

Šī komanda drukās virkni, sākot no otrās rakstzīmes un beidzot ar piekto rakstzīmi, vienlaikus noņemot atlikušās sākuma un beigu rakstzīmes.
rmv 2. un 5. c2

Noņemiet pēdējo rakstzīmi no virknes

Lai noņemtu pēdējo rakstzīmi no virknes Sveiks kā tev iet? izmantojiet griezt komandu ar rev , sekojoši:

$izmest ārā 'Sveiks kā tev iet?' | rev | griezt -c2- | rev

Šī komanda darbojas, vispirms apgriežot virkni, pēc tam nogriežot pirmo rakstzīmi un beidzot to atkal mainot, lai iegūtu vēlamo rezultātu.
02 Noņemiet pēdējo rakstzīmi no virknes

Noņemiet pēdējās četras rakstzīmes no virknes

Lai no rindas noņemtu pēdējās četras rakstzīmes Sveiks kā tev iet? pavēle ​​būtu šāda:

$izmest ārā 'Sveiks kā tev iet?' | rev | griezt -c5- | rev

Šī komanda darbojas, vispirms apgriežot virkni, pēc tam nogriežot pirmās četras rakstzīmes un pēc tam apgriežot to vēlreiz, lai iegūtu vēlamo rezultātu.
rmv pēdējās četras rakstzīmes

Noņemiet pirmo un pēdējo rakstzīmi no virknes

Lai noņemtu virknes pirmo un pēdējo rakstzīmi Sveiks kā tev iet? izmantojiet griezt komandu ar rev , sekojoši:

$izmest ārā 'Sveika pasaule!' | griezt -c2- | rev | griezt -c2- |rev

Šī komanda darbojas, nogriežot pirmo rakstzīmi, pēc tam apgriežot virkni un pārgriežot tās pirmo rakstzīmi, un pēc tam apgriežot to vēlreiz, lai iegūtu vēlamo rezultātu.
rmv pirmais un pēdējais

Noņemiet rakstzīmi no virknes, izmantojot tr

Komanda tr (saīsinājums no tulkošanas) tiek izmantota rakstzīmju tulkošanai, saspiešanai un dzēšanai. Varat arī izmantot tr, lai noņemtu rakstzīmes no virknes.

Demonstrēšanas nolūkos mēs izmantosim virknes paraugu un pēc tam pievienosim to komandai tr.

Noņemiet visus rakstura gadījumus

Izmantojot tr komandu, no virknes varat noņemt visus mazo vai lielo burtu gadījumus. Piemēram, lai no virknes noņemtu visus mazo burtu “h” gadījumus, komanda būtu šāda:

$izmest ārā 'Sveiks kā tev iet?' | NS -dh

noņemt visus gadījumus 01

Līdzīgi, lai no virknes noņemtu visus lielo burtu “H” gadījumus, komanda būtu šāda:

$izmest ārā 'Sveiks kā tev iet?' | NS -dH

Varat arī izmantot interpretētās secības, lai noņemtu mazos vai lielos burtus.

$izmest ārā 'Sveiks kā tev iet?'| NS -d [: augšējais:]

gadījumi zemāki

$izmest ārā 'Sveiks kā tev iet?'| NS -d [: zemāks:]

notiek augšējā daļā

Noņemiet visus mazo un lielo burtu gadījumus

No virknes varat noņemt arī visus mazo un lielo burtu gadījumus. Piemēram, šī komanda noņems visas rakstzīmes “h”, gan mazos, gan lielos.

$izmest ārā 'Sveiks kā tev iet?' | NS -d'HH'

notiek augšējā un apakšējā daļā

Noņemiet visus rakstzīmju gadījumus noteiktā diapazonā

Lai noņemtu visus rakstzīmju gadījumus no virknes noteiktā diapazonā “d-h”, komanda būtu šāda:

$izmest ārā 'Sveiks kā tev iet?' | NS -d 'd-h'

Šī komanda virknē noņems visas rakstzīmes diapazonā “d-h” (d, e, f, g, h).
notiek konkrēts diapazons

Secinājums

Sistēmā Linux vienmēr būs vairāk nekā viens veids, kā paveikt vienkāršu darbu. Tas pats attiecas uz rakstzīmju noņemšanu no virknes. Šajā rakstā tika parādīti četri dažādi veidi, kā to izdarīt, kā arī daži piemēri nevēlamu rakstzīmju noņemšanai no virknes. Izlemšana, kuru rīku izmantot, ir atkarīgs no jūsu vēlmēm un, vēl svarīgāk, no tā, ko vēlaties sasniegt.