BASH programmēšana

Rakstzīmju noņemšana no virknes Bash

Rakstzīmju noņemšana no virknes Bash

Dažreiz jums var būt nepieciešams noņemt rakstzīmes no virknes. Lai kāds būtu iemesls, Linux nodrošina dažādus iebūvētus, parocīgus 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:

Šajā rakstā parādītās komandas tika izpildītas operētājsistēmā Ubuntu 20.04 Fokālais Fossa. Tās pašas komandas var veikt arī citos Linux izplatījumos, kuriem ir pieejami iepriekš minētie rīki. Komandu izpildīšanai mēs izmantosim noklusējuma lietojumprogrammu Terminal. Lietotnei 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 veikt pamata teksta manipulācijas ar ievades straumēm. Varat arī izmantot sed, lai noņemtu nevēlamās rakstzīmes no virknēm.

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

Noņemiet specifisko rakstzīmi no virknes

Izmantojot sed, jūs varat noņemt konkrētu rakstzīmi no virknes. Piemēram, lai noņemtu “h” no virknes “Sveiks kā tev iet?”Komanda būtu:

$ echo "sveiki, kā tev iet?"| sed 's / h //'

Tas noņems tikai pirmo “h” parādīšanos virknē.

Lai no virknes noņemtu visus “h” gadījumus, izmantojiet šādu komandu:

$ echo "sveiki, kā tev iet?"| sed 's / h // g'

Kur g apzīmē globālu. Tas noņems visus “h” gadījumus virknē.

Noņemt pirmo rakstzīmi no virknes

Lai noņemtu pirmo rakstzīmi no virknes “Sveiks kā tev iet?” komanda būtu:

$ echo "sveiki, kā tev iet?"| sed 's / ^.// 'fails

Kur (.) precīzi atbilst vienai rakstzīmei un (^) atbilst jebkurai rakstzīmei virknes sākumā.

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

Lai noņemtu pēdējo rakstzīmi no virknes “Sveiks kā tev iet?” komanda būtu:

$ echo "sveiki, kā tev iet?"| sed.$ // '

Kur (.) precīzi atbilst vienai rakstzīmei un ($) atbilst jebkurai rakstzīmei virknes beigās.

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?” komanda būtu:

$ echo "sveiki, kā tev iet?"| sed 's / ^.//; s /.$ // '

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ādi. Awk ļauj filtrēt un pārveidot tekstu dažādos veidos. Varat arī izmantot awk, lai noņemtu rakstzīmes no virknēm.

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

Noņemt pirmo rakstzīmi no virknes

Lai noņemtu pirmo rakstzīmi no virknes “Sveiks kā tev iet?” komanda būtu:

$ echo "sveiki, kā tev iet?"| awk 'print substr ($ 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 pirmās divas rakstzīmes no virknes

Varat arī noņemt noteiktu rakstzīmju skaitu no virknes sākuma. Piemēram, lai noņemtu pirmās divas rakstzīmes no virknes “Sveiks kā tev iet?” komanda būtu:

$ echo "sveiki, kā tev iet?"| awk 'print substr ($ 0, 3)'

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

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

Lai noņemtu pēdējo rakstzīmi noSveiks kā tev iet?” komanda būtu:

$ echo "sveiki, kā tev iet?"| awk 'drukas substrāts ($ 0, 1, garums ($ 0) -1)'

Kur garums ($ 0) -1 nozīmē atņemt ”1'no kopējā rakstzīmju garuma.

Iepriekš minētā komanda izdrukās virkni, kas sākas ar burta numuru '1' līdz garums ($ 0) -1 lai noņemtu pēdējo varoni.

Tur ir '19'rakstzīmes (ieskaitot atstarpes) iepriekš minētajā virknē. Komanda darbosies, izdrukājot visas rakstzīmes, sākot ar rakstzīmi '1"un līdz rakstzīmei"18,"vienlaikus noņemot pēdējo rakstzīmi"19."

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

Lai noņemtu pēdējās divas rakstzīmes noSveiks kā tev iet?”Komanda būtu:

$ echo "sveiki, kā tev iet?"| awk 'drukas substrāts ($ 0, 1, garums ($ 0) -2)'

Kur garums ($ 0) -2 nozīmē atņemt ”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īmju skaitam"garums ($ 0) -2,', lai noņemtu pēdējās divas rakstzīmes virknē.

Noņemiet no virknes gan pirmās, gan pēdējās rakstzīmes

Lai no virknes noņemtu gan pirmo, gan pēdējo rakstzīmi “Sveiks kā tev iet?” komanda būtu:

$ echo "sveiki, kā tev iet?"| awk 'drukas substrāts ($ 0, 2, garums ($ 0) - 2)'

Kur garums ($ 0) -2 nozīmē atņemt ”2'no kopējā rakstzīmju garuma.

Iepriekš minētā komanda drukās virkni, sākot ar rakstzīmes numuru '2“līdz rakstzīmju skaitam”garums ($ 0) -2,', lai noņemtu pirmo un pēdējo rakstzīmi.

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ā. Varat arī izmantot šo komandu, lai noņemtu rakstzīmes no virknes.

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

Noņemt pirmo rakstzīmi no virknes

Lai izņemtu pirmo rakstzīmi no virknes, “Sveiks kā tev iet?” komanda būtu:

$ echo "sveiki, kā tev iet?"| griezums -c 2-

Šī komanda izdrukās virkni, sākot ar otro rakstzīmi, vienlaikus noņemot pirmo rakstzīmi.

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

Lai noņemtu pirmās četras rakstzīmes no virknes “Sveiks kā tev iet?” komanda būtu:

$ echo "sveiki, kā tev iet?"| griezums -c 5-

Šī komanda izdrukās virkni, sākot no piektās rakstzīmes, vienlaikus noņemot pirmās četras rakstzīmes.

Drukas virkne starp 2. un 5. rakstzīmi

Lai izdrukātu virkni “Sveiks kā tev iet?” starp otro un piekto rakstzīmi, komanda būtu:

$ echo "sveiki, kā tev iet?"| griezums -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.

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

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

$ echo "sveiki, kā tev iet?"| rev | cut -c2- | rev

Šī komanda darbojas, vispirms mainot virkni, pēc tam sagriežot pirmo rakstzīmi un visbeidzot to apgriežot vēlreiz, lai iegūtu vēlamo rezultātu.

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

Lai noņemtu pēdējās četras rakstzīmes no rindas “Sveiks kā tev iet?” komanda būtu:

$ echo "sveiki, kā tev iet?"| rev | cut -c5- | rev

Šī komanda darbojas, vispirms mainot virkni, pēc tam sagriež pirmās četras rakstzīmes un pēc tam atkal to apgriež, lai iegūtu vēlamo rezultātu.

Noņemt pirmās un pēdējās rakstzīmes no virknes

Lai noņemtu pirmās un pēdējās rakstzīmes no virknes “Sveiks kā tev iet?” izmantot griezt komandu ar rev, sekojoši:

$ echo "sveika pasaule!"| griezt -c2- | rev | griezt -c2- | rev

Šī komanda darbojas, sagriežot pirmo rakstzīmi, pēc tam mainot virkni un sagriežot pirmo rakstzīmi, un pēc tam atkal to apgriežot, lai iegūtu vēlamo rezultātu.

Noņemiet rakstzīmi no virknes, izmantojot tr

Komanda tr (tulkošanas saīsinājums) tiek izmantota rakstzīmju tulkošanai, saspiešanai un dzēšanai no virknes. 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ņemt visus rakstzīmju gadījumus

Izmantojot komandu tr, jūs varat noņemt visus virknes mazos vai lielos burtus. Piemēram, lai no virknes noņemtu visus mazo burtu “h” gadījumus, komanda būtu:

$ echo "Sveiki, kā tev iet?"| tr -d h

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

$ echo "Sveiki, kā tev iet?"| tr -d H

Interpretētās sekvences var izmantot arī, lai noņemtu mazos vai lielos burtus:

$ echo "Sveiki, kā tev iet?"| tr -d [: augšējais:]

$ echo "LABI, kā tev iet?"| tr -d [: zemāks:]

Noņemt visus mazos un lielos burtus

Jūs varat arī noņemt visus virknes gadījumus gan ar mazajiem, gan ar lielajiem burtiem. Piemēram, šī komanda noņem visus rakstzīmes “h” gadījumus, gan mazos, gan lielos.

$ echo "Sveiki, kā tev iet?"| tr -d 'hH'

Noņemt 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:

$ echo "sveiki, kā tev iet?"| tr -d 'd-h'

Šī komanda noņems visas rakstzīmes virknē 'd-h' (d, e, f, g, h).

Secinājums

Linux vienmēr vienkārša darba veikšanai būs vairāk nekā viens veids. Tas pats ir ar 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.

Kā tvert un straumēt spēļu sesiju operētājsistēmā Linux
Agrāk spēļu spēlēšana tika uzskatīta tikai par hobiju, taču laika gaitā spēļu industrija piedzīvoja milzīgu tehnoloģiju un spēlētāju skaita pieaugumu....
Labākās spēles, ko spēlēt ar rokas izsekošanu
Oculus Quest nesen iepazīstināja ar lielisku ideju par rokas izsekošanu bez kontrolieriem. Ar arvien lielāku spēļu un aktivitāšu skaitu, kas atbalsta ...
Kā parādīt OSD pārklājumu pilnekrāna Linux lietotnēs un spēlēs
Spēlējot pilnekrāna spēles vai lietojot lietotnes bez atrautības pilnekrāna režīmā, jūs varat izslēgt no attiecīgās sistēmas informācijas, kas redzama...