Apakšvirkņu pārbaude Bash skriptos

Apakšvirkņu pārbaude Bash skriptos
Bash

Ievads stīgu ierobežošanā Bash valodā

Strādājot ar Bash skriptiem, bieži rodas situācijas, kad jums ir jāpārbauda, ​​vai virknē ir noteikta apakšvirkne. Tas ir būtisks uzdevums daudzos skriptēšanas scenārijos, piemēram, ievades datu parsēšanā, virkņu validācijā vai satura filtrēšanā, pamatojoties uz noteiktiem kritērijiem.

Šajā rakstā mēs izpētīsim dažādas metodes, kā to panākt programmā Bash, tostarp izmantojot nosacījumus paziņojumus un komandas, piemēram, "echo" un "grep". Mēs arī apspriedīsim visefektīvākās un lasāmākās pieejas, lai padarītu jūsu skriptus labāk uzturējamus un mazāk pakļautus kļūdām.

Pavēli Apraksts
[[ ]] Nosacījuma izteiksme, ko izmanto, lai pārbaudītu virknes un citus nosacījumus programmā Bash.
* Aizstājējzīme, ko izmanto, lai attēlotu jebkādu rakstzīmju skaitu virknes modeļa atbilstībā.
echo Komanda, ko izmanto, lai parādītu teksta rindiņu vai virkni, kas nodota kā arguments.
grep Komandrindas utilīta vienkārša teksta datu meklēšanai rindām, kas atbilst regulārai izteiksmei.
-q Grep opcija, kas nomāc parasto izvadi un atgriež tikai izejas statusu.
case Nosacīts paziņojums, ko izmanto, lai saskaņotu modeļus valodā Bash.
;; Atdalītājs, ko izmanto gadījuma paziņojumos, lai atdalītu dažādas modeļa darbības.

Izpratne par apakšvirkņu pārbaudi programmā Bash

Pirmajā skriptā mēs izmantojam conditional statements lai pārbaudītu, vai virknē ir noteikta apakšvirkne. Mēs definējam galveno virkni un apakšvirkni, pēc tam izmantojam [[ ]] konstruēt, kas ļauj veikt uzlabotus virkņu salīdzinājumus. Iekavās mēs izmantojam * aizstājējzīme, lai attēlotu jebkuru rakstzīmju skaitu pirms un pēc apakšvirknes. Ja nosacījums ir patiess, skripts izdrukā "Tas ir tur!"; pretējā gadījumā tiek drukāts "Tā nav!". Šī metode ir efektīva un izmanto Bash iebūvētās iespējas modeļu saskaņošanai.

Otrais skripts izmanto echo un grep komandas, lai sasniegtu tādu pašu rezultātu. Mēs vēlreiz definējam galveno virkni un apakšvirkni, pēc tam izmantojam echo lai izvadītu galveno virkni un pievienotu to grep izmantojot -q iespēja nomākt normālu izvadi. Grep meklē apakšvirkni galvenajā virknē. Ja apakšvirkne tiek atrasta, skripts izdrukā "Tas ir tur!"; ja nē, drukā "Tā nav!". Šī pieeja izmanto jaudīgās teksta meklēšanas iespējas grep, padarot to piemērotu skriptiem, kur jāsaskaņo sarežģīti teksta modeļi.

Papildu bash stīgu darbību izpēte

Trešais skripts izmanto a case paziņojums, lai pārbaudītu apakšvirknes esamību. Pēc galvenās virknes un apakšvirknes definēšanas case paziņojums atbilst galvenajai virknei pret dažādiem modeļiem. Ja apakšvirkne ir klāt, tiek izpildīta atbilstošā darbība, izdrukājot "Tas ir tur!". Ja apakšvirkne netiek atrasta, noklusējuma darbība izdrukā "Tas nav!". Šī metode ir īpaši noderīga, ja ir jāpārbauda vairāki modeļi, piemēram, case paziņojums var apstrādāt sarežģītu sazarojumu loģiku tīrāk nekā ar vairākiem if-else paziņojumi.

Kopumā katra no šīm metodēm nodrošina veidu, kā noteikt, vai virknē Bash ir noteikta apakšvirkne. Metodes izvēle ir atkarīga no nepieciešamās virknes saskaņošanas sarežģītības un skripta īpašajām prasībām. Izmantojot [[ ]] ar aizstājējzīmēm ir vienkārša un efektīva vienkāršām pārbaudēm, vienlaikus apvienojot echo un grep piedāvā jaudīgāku modeļu saskaņošanu. The case no otras puses, paziņojums ir ideāls, lai strukturētā veidā apstrādātu vairākus atbilstības nosacījumus.

Nosacījumu priekšrakstu izmantošana, lai pārbaudītu, vai Bash nav apakšvirknes

Bash skriptēšanas metode

#!/bin/bash
# Define the main string
string="My string"
# Define the substring to search for
substring="foo"
# Check if the substring is present in the main string
if [[ "$string" == *"$substring"* ]]; then
  echo "It's there!"
else
  echo "It's not there!"
fi

Izmantojot Echo un Grep, lai atklātu apakšvirknes programmā Bash

Apvienojot Echo un Grep komandas

#!/bin/bash
# Define the main string
string="My string"
# Define the substring to search for
substring="foo"
# Use echo and grep to check if the substring is present
if echo "$string" | grep -q "$substring"; then
  echo "It's there!"
else
  echo "It's not there!"
fi

Case Statements izmantošana apakšvirknes noteikšanai programmā Bash

Bash skriptēšana ar gadījuma paziņojumiem

#!/bin/bash
# Define the main string
string="My string"
# Define the substring to search for
substring="foo"
# Use case statement to check for the substring
case "$string" in
  *"$substring"*)
    echo "It's there!"
    ;;
  *)
    echo "It's not there!"
    ;;
esac

Papildu metodes stīgu ierobežošanai programmā Bash

Papildus pamata metodēm, lai pārbaudītu, vai virknē Bash ir apakšvirkne, ir arī uzlabotas metodes, kas var būt noderīgas dažādos scenārijos. Viena no šādām metodēm ietver regulāro izteiksmju izmantošanu ar awk komandu. Awk ir jaudīga programmēšanas valoda rakstu skenēšanai un apstrādei. Izmantojot awk, varat veikt sarežģītas virkņu darbības ar lielāku elastību. Piemēram, jūs varat izmantot awk lai virknē meklētu apakšvirkni un veiktu darbības, pamatojoties uz atbilstību.

Vēl viena uzlabota tehnika ietver izmantošanu sed komanda, kas apzīmē straumes redaktoru. Sed ir noderīga teksta parsēšanai un pārveidošanai datu plūsmā vai failā. Tu vari izmantot sed lai meklētu apakšvirkni un veiktu aizstāšanas vai citas darbības ar atbilstošo tekstu. Šīs uzlabotās metodes, lai gan tās ir sarežģītākas, piedāvā jaudīgas iespējas teksta apstrādei Bash skriptos, padarot tās nenovērtējamas, veicot uzdevumus, kuriem nepieciešama sarežģīta virkņu manipulācija.

Bieži uzdotie jautājumi par stīgu ierobežošanu valodā Bash

  1. Kā pārbaudīt, vai virknē ir apakšvirkne, izmantojot awk?
  2. Lai pārbaudītu, vai virknē ir apakšvirkne, izmantojot awk, varat izmantot komandu: echo "$string" | awk '{if ($0 ~ /substring/) print "It's there!"}'
  3. Vai es varu izmantot sed lai pārbaudītu apakšvirkni?
  4. Jā, jūs varat izmantot sed lai pārbaudītu apakšvirkni ar komandu: echo "$string" | sed -n '/substring/p'
  5. Kāda ir izmantošanas priekšrocība awk beidzies grep?
  6. Awk nodrošina jaudīgākas teksta apstrādes iespējas un var veikt darbības, kuru pamatā ir modeļu atbilstības, padarot to daudzpusīgāku nekā grep.
  7. Kā var ignorēt reģistru, meklējot apakšvirkni?
  8. Lai ignorētu reģistru, meklējot apakšvirkni, varat izmantot -i variants ar grep: echo "$string" | grep -iq "substring"
  9. Vai ir iespējams izmantot regex ar if paziņojumi Bašā?
  10. Jā, jūs varat izmantot regex ar if paziņojumus Bash, izmantojot =~ operators: if [[ "$string" =~ regex ]]; then

Pēdējās domas par stīgu ierobežošanu valodā Bash

Noteikt, vai virknē ir ietverta apakšvirkne programmā Bash, ir izplatīts uzdevums, ko var veikt, izmantojot vairākas metodes, tostarp nosacījumus, grep komandas un reģistra paziņojumus. Katra metode nodrošina unikālu pieeju problēmas risināšanai, ļaujot izvēlēties piemērotāko, pamatojoties uz jūsu īpašajām vajadzībām. Apgūstot šīs metodes, jūs varat uzlabot savu Bash skriptu efektivitāti un lasāmību.