Kako ugotoviti, ali niz vsebuje podniz v Bashu

Kako ugotoviti, ali niz vsebuje podniz v Bashu
Bash

Uvod v ujemanje nizov v Bashu

Pri skriptnem izvajanju Bash je ugotavljanje, ali niz vsebuje določen podniz, običajna naloga. Ta vodnik bo raziskal metode, ki so na voljo za ta namen. Uporabili bomo različne tehnike za preverjanje podnizov, s čimer bomo zagotovili učinkovito in uspešno delovanje vaših skriptov.

Začeli bomo s preprostim primerom in postopoma raziskovali naprednejše metode. Do konca tega priročnika boste lahko izbrali najboljši pristop za svoje posebne potrebe in napisali čistejše in berljivejše skripte Bash.

Ukaz Opis
[[ $string == *"$substring"* ]] Z ujemanjem vzorcev preveri, ali niz spremenljivke vsebuje podniz $substring.
grep -q Tihi način v grep vrne 0, če je iskalni niz najden, in 1 v nasprotnem primeru, ne da bi ustvaril kakršen koli rezultat.
echo "$string" | grep Išče podniz znotraj niza tako, da niz napelje v grep.
case "$string" in *"$substring"*) Uporablja stavek case za ujemanje vzorcev, da preveri, ali podniz obstaja v nizu.
esac Konča blok stavka case.
;; Zaključi blok vzorca znotraj stavka case.
-q Možnost v grep, ki onemogoči izpis, uporabno za preverjanje prisotnosti brez prikaza ujemanj.

Razumevanje ujemanja nizov v Bashu

Pri skriptnem izvajanju Bash je določitev, ali niz vsebuje določen podniz, pogosta zahteva. Prvi skript uporablja zmožnosti Bash za ujemanje vzorcev. Stanje [[ $string == *"$substring"* ]] preveri, ali spremenljivka string vsebuje podniz $substring. Če je vzorec najden, odmeva "Tam je!". Ta metoda je jedrnata in učinkovita za preprosto iskanje podnizov neposredno v Bashu.

Drugi scenarij uporablja grep za isto nalogo. Z odmevom na string in ga napeljati na grep -q, lahko preverimo prisotnost $substring na malo drugačen način. The -q možnost zagotavlja, da grep deluje v tihem načinu in vrne 0, če je podniz najden, brez kakršnega koli izhoda. Ta skript je uporaben, ko morate uporabiti grepzmogljive zmožnosti iskanja besedila znotraj skripta Bash.

Uporaba ujemanja vzorcev in Grep

Tretji skript prikazuje drugo metodo z uporabo case izjava. Tukaj, case izjava preveri, ali je $string vsebuje $substring z ujemanjem vzorca *"$substring"* . Če je vzorec najden, odmeva "Tam je!". Ta pristop je uporaben za bolj zapletene pogoje ali ko morate ujemati več vzorcev znotraj skripta.

Vse te metode zagotavljajo učinkovite načine za preverjanje podnizov v Bashu, vsaka s svojimi prednostmi. Ujemanje vzorcev z [[...]] je neposreden in učinkovit za preproste primere. Uporaba grep ponuja večjo prilagodljivost in zmogljive zmožnosti obdelave besedila, zlasti za zahtevnejša iskanja nizov. The case zagotavlja strukturiran in berljiv način za obravnavanje več pogojev v vašem skriptu. Razumevanje teh metod vam omogoča, da izberete najboljši pristop za vaše specifične potrebe skriptiranja.

Preverjanje, ali niz vsebuje podniz v Bashu

Bash skriptiranje

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

Uporaba grep za iskanje podniza v Bashu

Bash skriptiranje z grep

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

Uporaba izjave case za preverjanje podniza

Bash skriptiranje z izjavo case

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

Napredne tehnike za ujemanje nizov v Bashu

Poleg osnovnih iskanj po podnizu ponuja skriptiranje Bash tudi napredne tehnike, kot so regularni izrazi in razširitev parametrov. Regularni izrazi zagotavljajo robusten način za iskanje vzorcev v nizih. Z uporabo orodij, kot je grep z -E možnost (razširjeni regularni izrazi) omogoča definiranje kompleksnih iskalnih vzorcev. Na primer ukaz echo "$string" | grep -E 'pattern' vam omogoča iskanje bolj specifičnih ali prilagodljivih vzorcev v vaših nizih. Ta metoda je zmogljiva pri delu s spremenljivimi formati besedila.

Druga uporabna tehnika je razširitev parametrov. Bash ponuja več oblik razširitve parametrov, ki jih je mogoče uporabiti za manipulacijo nizov in ekstrahiranje podnizov. Na primer sintaksa ${string:position:length} izvleče podniz iz string z začetkom pri position za dano length. Podobno vzorec ${string#substring} odstrani najkrajše ujemanje od substring od začetka string, medtem ${string##substring} odstrani najdaljšo ujemanje. Te tehnike so v pomoč pri natančnejšem nadzoru nad manipulacijo nizov v vaših skriptih.

Pogosta vprašanja in odgovori o ujemanju nizov v Bashu

  1. Kateri je najpreprostejši način za preverjanje podniza v Bashu?
  2. Najenostavnejša metoda je uporaba ujemanja vzorcev z [[ $string == *"$substring"* ]] sintaksa.
  3. Kako lahko uporabim grep najti podniz?
  4. Lahko uporabiš echo "$string" | grep -q "$substring" preveriti, če $substring je prisoten v $string.
  5. Kaj je razširitev parametrov v Bashu?
  6. Razširitev parametrov je tehnika v Bashu za manipulacijo nizov. na primer ${string:position:length} izvleče podniz.
  7. Ali lahko uporabljam regularne izraze v skriptih Bash?
  8. Da, regularne izraze lahko uporabljate z orodji, kot je grep -E za razširjeno ujemanje vzorcev.
  9. Kaj pomeni case izjava do v Bashu?
  10. The case stavek omogoča ujemanje vzorcev s spremenljivko in izvaja ukaze na podlagi ujemajočega se vzorca.
  11. Kako ${string#substring} delo?
  12. Ta oblika razširitve parametra odstrani najkrajše ujemanje substring od začetka string.
  13. Kaj je razlika med ${string#substring} in ${string##substring}?
  14. Prvi odstrani najkrajše ujemanje, drugi pa najdaljše ujemanje substring od začetka string.
  15. Ali lahko v enem pogoju preverim več podnizov?
  16. Da, lahko uporabite case stavek za preverjanje več vzorcev v enem samem pogoju.
  17. Kakšna je uporaba -q možnost v grep?
  18. The -q možnost v grep zavrne izpis in vrne samo izhodni status, zaradi česar je uporaben za pogojna preverjanja.

Končne misli o ujemanju nizov v Bashu

Obvladovanje ujemanja nizov v Bashu je bistveno za učinkovito skriptiranje. Obravnavane metode, od osnovnega ujemanja vzorcev do uporabe grep in case izjave ponujajo vsestranske rešitve za različne potrebe. Z razumevanjem in uporabo teh tehnik lahko izboljšate funkcionalnost in berljivost svojih skriptov, zaradi česar so bolj robustni in lažji za vzdrževanje.