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
- Kuinka tarkistan, sisältääkö merkkijono alimerkkijonon käyttämällä awk?
- 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!"}'
- Voinko käyttää sed tarkistaaksesi alimerkkijonon?
- Kyllä, voit käyttää sed tarkistaaksesi alimerkkijonon komennolla: echo "$string" | sed -n '/substring/p'
- Mitä hyötyä käytöstä on awk yli grep?
- Awk tarjoaa tehokkaampia tekstinkäsittelyominaisuuksia ja voi suorittaa toimintoja kaavaosumien perusteella, mikä tekee siitä monipuolisemman kuin grep.
- Kuinka voin jättää kirjainkoon huomioimatta alimerkkijonoa haettaessa?
- Jos haluat jättää kirjainkoon huomioimatta alimerkkijonoa etsiessäsi, voit käyttää -i vaihtoehto kanssa grep: echo "$string" | grep -iq "substring"
- Onko mahdollista käyttää regex kanssa if lausunnot bashissa?
- 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.