Alimerkkijonojen tarkistaminen Bash-skripteissä

Alimerkkijonojen tarkistaminen Bash-skripteissä
Bash

Johdatus Bashin merkkijonojen hallintaan

Bash-skriptien kanssa työskennellessä on tavallista kohdata tilanteita, joissa sinun on tarkistettava, sisältääkö merkkijono tietyn alimerkkijonon. Tämä on perustehtävä monissa komentosarjaskenaarioissa, kuten syötetietojen jäsentämisessä, merkkijonojen vahvistamisessa tai sisällön suodattamisessa tiettyjen kriteerien perusteella.

Tässä artikkelissa tutkimme erilaisia ​​menetelmiä tämän saavuttamiseksi Bashissa, mukaan lukien ehdollisten lausekkeiden ja komentojen, kuten "echo" ja "grep", käyttö. Keskustelemme myös tehokkaimmista ja luettavimmista tavoista tehdä komentosarjoistasi ylläpidettävämpiä ja vähemmän alttiita virheille.

Komento Kuvaus
[[ ]] Ehdollinen lauseke, jota käytetään merkkijonojen ja muiden ehtojen testaamiseen Bashissa.
* Jokerimerkki, jota käytetään edustamaan mitä tahansa merkkimäärää merkkijonokuvion vastaavuudessa.
echo Komento, jota käytetään argumenttina välitetyn tekstirivin tai merkkijonon näyttämiseen.
grep Komentorivityökalu, jolla etsitään säännöllistä lauseketta vastaavia rivejä pelkästä tekstistä.
-q Vaihtoehto grepille, joka vaimentaa normaalin lähdön ja palauttaa vain poistumistilan.
case Ehdollinen lauseke, jota käytetään vastaamaan kuvioita Bashissa.
;; Erotin, jota käytetään tapauslausekkeissa erilaisten kuviotoimintojen erottamiseen.

Alimerkkijonojen tarkistuksen ymmärtäminen Bashissa

Ensimmäisessä käsikirjoituksessa käytämme conditional statements tarkistaaksesi, sisältääkö merkkijono tietyn alimerkkijonon. Määrittelemme päämerkkijonon ja alimerkkijonon ja käytämme sitten [[ ]] konstrukti, joka mahdollistaa edistyneet merkkijonovertailut. Kiinnikkeiden sisällä käytämme * jokerimerkki edustamaan mitä tahansa merkkejä ennen ja jälkeen osamerkkijonoa. Jos ehto on tosi, komentosarja tulostaa "Se on siellä!"; muuten se tulostaa "Se ei ole siellä!". Tämä menetelmä on tehokas ja käyttää Bashin sisäänrakennettuja ominaisuuksia kuvioiden yhteensovittamiseen.

Toinen kirjoitus käyttää echo ja grep komentoja saavuttaakseen saman tuloksen. Määrittelemme jälleen päämerkkijonon ja alimerkkijonon ja käytämme sitten echo tulostaaksesi päämerkkijonon ja ohjataksesi sen grep käyttämällä -q mahdollisuus vaimentaa normaali lähtö. Grep etsii alimerkkijonoa päämerkkijonosta. Jos osamerkkijono löytyy, komentosarja tulostaa "Se on siellä!"; jos ei, se tulostaa "Se ei ole siellä!". Tämä lähestymistapa hyödyntää tehokkaita tekstihakuominaisuuksia grep, mikä tekee siitä sopivan skripteille, joissa monimutkaisia ​​tekstimalleja on sovitettava yhteen.

Bash-merkkijonojen edistyneiden toimintojen tutkiminen

Kolmas komentosarja käyttää a case lauseke alimerkkijonon olemassaolon tarkistamiseksi. Päämerkkijonon ja alimerkkijonon määrittämisen jälkeen case lause vastaa päämerkkijonoa eri kuvioita vastaan. Jos alimerkkijono on läsnä, suoritetaan vastaava toimenpide, joka tulostaa "Se on siellä!". Jos alimerkkijonoa ei löydy, oletustoiminto tulostaa "Se ei ole olemassa!". Tämä menetelmä on erityisen hyödyllinen, kun tarkistettavia kuvioita on useita, kuten case lauseke voi käsitellä monimutkaista haarautumislogiikkaa puhtaammin kuin useita if-else lausunnot.

Kaiken kaikkiaan jokainen näistä menetelmistä tarjoaa tavan määrittää, sisältääkö merkkijono tietyn alimerkkijonon Bashissa. Menetelmän valinta riippuu tarvittavan merkkijonovastaavuuden monimutkaisuudesta ja komentosarjan erityisvaatimuksista. Käyttämällä [[ ]] jokerimerkeillä on suoraviivaista ja tehokasta yksinkertaisiin tarkistuksiin yhdistämisen aikana echo ja grep tarjoaa tehokkaamman kuvion sovituksen. The case lauseke puolestaan ​​​​on ihanteellinen useiden täsmäysehtojen käsittelemiseen jäsennellyllä tavalla.

Ehdollisten lausekkeiden käyttäminen alimerkkijonojen tarkistamiseen Bashissa

Bash-komentosarjamenetelmä

#!/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

Echon ja Grepin käyttäminen alimerkkijonojen tunnistamiseen Bashissa

Echo- ja Grep-komentojen yhdistäminen

#!/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

Tapauslausekkeiden käyttäminen osamerkkijonojen tunnistamiseen Bashissa

Bash-komentosarja tapauslausekkeilla

#!/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

Kehittyneet menetelmät merkkijonojen rajoittamiseen Bashissa

Perusmenetelmien lisäksi, joilla tarkistetaan, sisältääkö merkkijono alimerkkijonoa Bashissa, on olemassa kehittyneempiä tekniikoita, jotka voivat olla hyödyllisiä eri skenaarioissa. Yksi tällainen menetelmä sisältää säännöllisten lausekkeiden käyttämisen awk komento. Awk on tehokas ohjelmointikieli kuvioiden skannaukseen ja käsittelyyn. Käyttämällä awk, voit suorittaa monimutkaisia ​​merkkijonotoimintoja joustavammin. Voit esimerkiksi käyttää awk etsiäksesi alimerkkijonoa merkkijonosta ja suorittaaksesi toimintoja vastaavuuden perusteella.

Toinen edistynyt tekniikka sisältää sed komento, joka tarkoittaa stream editoria. Sed on hyödyllinen tekstin jäsentämiseen ja muuntamiseen tietovirrassa tai tiedostossa. Voit käyttää sed Etsiäksesi osamerkkijonoa ja suorittaaksesi korvauksia tai muita toimintoja vastaavalle tekstille. Nämä edistyneet menetelmät, vaikka ne ovatkin monimutkaisempia, tarjoavat tehokkaita ominaisuuksia tekstinkäsittelyyn Bash-skripteissä, mikä tekee niistä korvaamattomia tehtävissä, jotka vaativat hienostuneita merkkijonojen käsittelyä.

Usein kysyttyjä kysymyksiä Bashin merkkijonojen suojauksesta

  1. Kuinka tarkistan, sisältääkö merkkijono alimerkkijonon käyttämällä awk?
  2. Voit tarkistaa, sisältääkö merkkijono alimerkkijonoa käyttämällä awk, voit käyttää komentoa: echo "$string" | awk '{if ($0 ~ /substring/) print "It's there!"}'
  3. Voinko käyttää sed tarkistaaksesi alimerkkijonon?
  4. Kyllä, voit käyttää sed tarkistaaksesi alimerkkijonon komennolla: echo "$string" | sed -n '/substring/p'
  5. Mitä hyötyä käytöstä on awk yli grep?
  6. Awk tarjoaa tehokkaampia tekstinkäsittelyominaisuuksia ja voi suorittaa toimintoja kaavaosumien perusteella, mikä tekee siitä monipuolisemman kuin grep.
  7. Kuinka voin jättää kirjainkoon huomioimatta alimerkkijonoa haettaessa?
  8. Jos haluat jättää kirjainkoon huomioimatta alimerkkijonoa etsiessäsi, voit käyttää -i vaihtoehto kanssa grep: echo "$string" | grep -iq "substring"
  9. Onko mahdollista käyttää regex kanssa if lausunnot bashissa?
  10. Kyllä, voit käyttää regexiä kanssa if lausekkeet Bashissa käyttämällä =~ operaattori: if [[ "$string" =~ regex ]]; then

Viimeisiä ajatuksia bashin kielten hillitsemisestä

Sen määrittäminen, sisältääkö merkkijono alimerkkijonon Bashissa, on yleinen tehtävä, joka voidaan suorittaa useilla menetelmillä, mukaan lukien ehdolliset käskyt, grep-komennot ja case-lauseet. Jokainen menetelmä tarjoaa ainutlaatuisen lähestymistavan ongelman ratkaisemiseen, joten voit valita sopivimman omien tarpeidesi perusteella. Hallitsemalla näitä tekniikoita voit parantaa Bash-skriptiesi tehokkuutta ja luettavuutta.