ബാഷിലെ സ്ട്രിംഗ് കണ്ടെയ്ൻമെൻ്റിൻ്റെ ആമുഖം
ബാഷ് സ്ക്രിപ്റ്റുകളിൽ പ്രവർത്തിക്കുമ്പോൾ, ഒരു സ്ട്രിംഗിൽ ഒരു നിർദ്ദിഷ്ട സബ്സ്ട്രിംഗ് അടങ്ങിയിട്ടുണ്ടോ എന്ന് പരിശോധിക്കേണ്ട സാഹചര്യങ്ങൾ നേരിടുന്നത് സാധാരണമാണ്. ഇൻപുട്ട് ഡാറ്റ പാഴ്സ് ചെയ്യുക, സ്ട്രിംഗുകൾ സാധൂകരിക്കുക, അല്ലെങ്കിൽ ചില മാനദണ്ഡങ്ങളെ അടിസ്ഥാനമാക്കി ഉള്ളടക്കം ഫിൽട്ടർ ചെയ്യുക എന്നിങ്ങനെയുള്ള പല സ്ക്രിപ്റ്റിംഗ് സാഹചര്യങ്ങളിലും ഇതൊരു അടിസ്ഥാന ദൗത്യമാണ്.
ഈ ലേഖനത്തിൽ, ബാഷിൽ ഇത് നേടുന്നതിനുള്ള വ്യത്യസ്ത രീതികൾ ഞങ്ങൾ പര്യവേക്ഷണം ചെയ്യും, സോപാധികമായ പ്രസ്താവനകളും `echo`, `grep` തുടങ്ങിയ കമാൻഡുകളും ഉപയോഗിക്കുന്നത് ഉൾപ്പെടെ. നിങ്ങളുടെ സ്ക്രിപ്റ്റുകൾ കൂടുതൽ പരിപാലിക്കാവുന്നതും പിശകുകൾക്ക് സാധ്യത കുറവുമാക്കുന്നതിനുള്ള ഏറ്റവും കാര്യക്ഷമവും വായിക്കാവുന്നതുമായ സമീപനങ്ങളും ഞങ്ങൾ ചർച്ച ചെയ്യും.
കമാൻഡ് | വിവരണം |
---|---|
[[ ]] | ബാഷിലെ സ്ട്രിംഗുകളും മറ്റ് അവസ്ഥകളും പരിശോധിക്കാൻ ഉപയോഗിക്കുന്ന ഒരു സോപാധിക പദപ്രയോഗം. |
* | ഒരു സ്ട്രിംഗ് പാറ്റേൺ പൊരുത്തത്തിൽ എത്ര പ്രതീകങ്ങളെയും പ്രതിനിധീകരിക്കാൻ ഉപയോഗിക്കുന്ന ഒരു വൈൽഡ്കാർഡ് പ്രതീകം. |
echo | ഒരു ആർഗ്യുമെൻ്റായി പാസാക്കിയ ടെക്സ്റ്റിൻ്റെയോ സ്ട്രിംഗിൻ്റെയോ ഒരു വരി പ്രദർശിപ്പിക്കാൻ ഉപയോഗിക്കുന്ന ഒരു കമാൻഡ്. |
grep | ഒരു സാധാരണ എക്സ്പ്രഷനുമായി പൊരുത്തപ്പെടുന്ന വരികൾക്കായി പ്ലെയിൻ-ടെക്സ്റ്റ് ഡാറ്റ തിരയുന്നതിനുള്ള ഒരു കമാൻഡ്-ലൈൻ യൂട്ടിലിറ്റി. |
-q | സാധാരണ ഔട്ട്പുട്ടിനെ അടിച്ചമർത്തുകയും എക്സിറ്റ് സ്റ്റാറ്റസ് മാത്രം നൽകുകയും ചെയ്യുന്ന grep-നുള്ള ഒരു ഓപ്ഷൻ. |
case | ബാഷിലെ പാറ്റേണുകൾ പൊരുത്തപ്പെടുത്താൻ ഉപയോഗിക്കുന്ന ഒരു സോപാധിക പ്രസ്താവന. |
;; | വ്യത്യസ്ത പാറ്റേൺ പ്രവർത്തനങ്ങൾ വേർതിരിക്കാൻ കേസ് സ്റ്റേറ്റ്മെൻ്റുകളിൽ ഉപയോഗിക്കുന്ന ഒരു ഡിലിമിറ്റർ. |
ബാഷിലെ സബ്സ്ട്രിംഗ് പരിശോധന മനസ്സിലാക്കുന്നു
ആദ്യ സ്ക്രിപ്റ്റിൽ, ഞങ്ങൾ ഉപയോഗിക്കുന്നു conditional statements ഒരു സ്ട്രിംഗിൽ ഒരു നിർദ്ദിഷ്ട സബ്സ്ട്രിംഗ് അടങ്ങിയിട്ടുണ്ടോ എന്ന് പരിശോധിക്കാൻ. ഞങ്ങൾ ഒരു പ്രധാന സ്ട്രിംഗും സബ്സ്ട്രിംഗും നിർവ്വചിക്കുന്നു, തുടർന്ന് ഉപയോഗിക്കുക [[ ]] നിർമ്മാണം, ഇത് വിപുലമായ സ്ട്രിംഗ് താരതമ്യങ്ങൾ അനുവദിക്കുന്നു. ബ്രാക്കറ്റിനുള്ളിൽ, ഞങ്ങൾ ഉപയോഗിക്കുന്നു * സബ്സ്ട്രിംഗിന് മുമ്പും ശേഷവും എത്ര പ്രതീകങ്ങളെയും പ്രതിനിധീകരിക്കാൻ വൈൽഡ്കാർഡ്. വ്യവസ്ഥ ശരിയാണെങ്കിൽ, സ്ക്രിപ്റ്റ് പ്രിൻ്റ് ചെയ്യുന്നു "അതുണ്ട്!"; അല്ലെങ്കിൽ, അത് "അവിടെ ഇല്ല!" എന്ന് പ്രിൻ്റ് ചെയ്യുന്നു. ഈ രീതി കാര്യക്ഷമവും പാറ്റേൺ പൊരുത്തപ്പെടുത്തലിനായി ബാഷിൻ്റെ ബിൽറ്റ്-ഇൻ കഴിവുകൾ ഉപയോഗപ്പെടുത്തുന്നതുമാണ്.
രണ്ടാമത്തെ സ്ക്രിപ്റ്റ് ഉപയോഗിക്കുന്നു echo ഒപ്പം grep ഒരേ ഫലം നേടാൻ കമാൻഡുകൾ. ഞങ്ങൾ വീണ്ടും ഒരു പ്രധാന സ്ട്രിംഗും സബ്സ്ട്രിംഗും നിർവ്വചിക്കുന്നു, തുടർന്ന് ഉപയോഗിക്കുക echo പ്രധാന സ്ട്രിംഗ് ഔട്ട്പുട്ട് ചെയ്ത് പൈപ്പിലേക്ക് grep ഉപയോഗിച്ച് -q സാധാരണ ഔട്ട്പുട്ട് അടിച്ചമർത്താനുള്ള ഓപ്ഷൻ. Grep പ്രധാന സ്ട്രിംഗിനുള്ളിലെ ഉപസ്ട്രിംഗിനായി തിരയുന്നു. സബ്സ്ട്രിംഗ് കണ്ടെത്തിയാൽ, സ്ക്രിപ്റ്റ് "അതുണ്ട്!" എന്ന് പ്രിൻ്റ് ചെയ്യുന്നു; ഇല്ലെങ്കിൽ, അത് "അവിടെ ഇല്ല!" എന്ന് പ്രിൻ്റ് ചെയ്യുന്നു. ഈ സമീപനം ശക്തമായ ടെക്സ്റ്റ് സെർച്ചിംഗ് കഴിവുകളെ സ്വാധീനിക്കുന്നു grep, സങ്കീർണ്ണമായ ടെക്സ്റ്റ് പാറ്റേണുകൾ പൊരുത്തപ്പെടുത്തേണ്ട സ്ക്രിപ്റ്റുകൾക്ക് ഇത് അനുയോജ്യമാക്കുന്നു.
വിപുലമായ ബാഷ് സ്ട്രിംഗ് ഓപ്പറേഷനുകൾ പര്യവേക്ഷണം ചെയ്യുന്നു
മൂന്നാമത്തെ ലിപി ഉപയോഗിക്കുന്നത് a case ഒരു സബ്സ്ട്രിംഗിൻ്റെ സാന്നിധ്യം പരിശോധിക്കുന്നതിനുള്ള പ്രസ്താവന. പ്രധാന സ്ട്രിംഗും സബ്സ്ട്രിംഗും നിർവചിച്ച ശേഷം, the case വ്യത്യസ്ത പാറ്റേണുകൾക്കെതിരായ പ്രധാന സ്ട്രിംഗുമായി സ്റ്റേറ്റ്മെൻ്റ് പൊരുത്തപ്പെടുന്നു. സബ്സ്ട്രിംഗ് ഉണ്ടെങ്കിൽ, "അതുണ്ട്!" എന്ന് അച്ചടിച്ച് അനുബന്ധ പ്രവർത്തനം നടപ്പിലാക്കുന്നു. സബ്സ്ട്രിംഗ് കണ്ടെത്തിയില്ലെങ്കിൽ, ഡിഫോൾട്ട് പ്രവർത്തനം "ഇത് അവിടെ ഇല്ല!" എന്ന് പ്രിൻ്റ് ചെയ്യുന്നു. പരിശോധിക്കാൻ ഒന്നിലധികം പാറ്റേണുകൾ ഉള്ളപ്പോൾ ഈ രീതി പ്രത്യേകിച്ചും ഉപയോഗപ്രദമാണ് case പ്രസ്താവനയ്ക്ക് സങ്കീർണ്ണമായ ബ്രാഞ്ചിംഗ് ലോജിക് ഒന്നിലധികം വൃത്തിയായി കൈകാര്യം ചെയ്യാൻ കഴിയും if-else പ്രസ്താവനകൾ.
മൊത്തത്തിൽ, ഈ രീതികൾ ഓരോന്നും ഒരു സ്ട്രിംഗിൽ ബാഷിൽ ഒരു പ്രത്യേക സബ്സ്ട്രിംഗ് അടങ്ങിയിട്ടുണ്ടോ എന്ന് നിർണ്ണയിക്കാൻ ഒരു വഴി നൽകുന്നു. രീതി തിരഞ്ഞെടുക്കുന്നത് ആവശ്യമായ സ്ട്രിംഗ് മാച്ചിംഗിൻ്റെ സങ്കീർണ്ണതയെയും സ്ക്രിപ്റ്റിൻ്റെ നിർദ്ദിഷ്ട ആവശ്യകതകളെയും ആശ്രയിച്ചിരിക്കുന്നു. ഉപയോഗിക്കുന്നത് [[ ]] വൈൽഡ്കാർഡുകൾ ഉപയോഗിച്ച് ലളിതമായ പരിശോധനകൾക്ക് ലളിതവും കാര്യക്ഷമവുമാണ്, സംയോജിപ്പിക്കുമ്പോൾ echo ഒപ്പം grep കൂടുതൽ ശക്തമായ പാറ്റേൺ പൊരുത്തപ്പെടുത്തൽ വാഗ്ദാനം ചെയ്യുന്നു. ദി case പ്രസ്താവന, മറിച്ച്, ഘടനാപരമായ രീതിയിൽ ഒന്നിലധികം പൊരുത്തപ്പെടുന്ന അവസ്ഥകൾ കൈകാര്യം ചെയ്യാൻ അനുയോജ്യമാണ്.
ബാഷിലെ സബ്സ്ട്രിംഗുകൾ പരിശോധിക്കാൻ സോപാധിക പ്രസ്താവനകൾ ഉപയോഗിക്കുന്നു
ബാഷ് സ്ക്രിപ്റ്റിംഗ് രീതി
#!/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
ബാഷിലെ സബ്സ്ട്രിംഗുകൾ കണ്ടെത്താൻ എക്കോയും ഗ്രെപ്പും ഉപയോഗിക്കുന്നു
എക്കോ, ഗ്രെപ്പ് കമാൻഡുകൾ സംയോജിപ്പിക്കുന്നു
#!/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
ബാഷിലെ സബ്സ്ട്രിംഗ് കണ്ടെത്തലിനായി കേസ് സ്റ്റേറ്റ്മെൻ്റുകൾ ഉപയോഗിക്കുന്നു
കേസ് പ്രസ്താവനകൾക്കൊപ്പം ബാഷ് സ്ക്രിപ്റ്റിംഗ്
#!/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
ബാഷിലെ സ്ട്രിംഗ് കണ്ടെയ്ൻമെൻ്റിനുള്ള വിപുലമായ രീതികൾ
ബാഷിൽ ഒരു സ്ട്രിംഗിൽ സബ്സ്ട്രിംഗ് ഉണ്ടോ എന്ന് പരിശോധിക്കുന്നതിനുള്ള അടിസ്ഥാന രീതികൾ കൂടാതെ, വ്യത്യസ്ത സാഹചര്യങ്ങളിൽ ഉപയോഗപ്രദമാകുന്ന കൂടുതൽ നൂതന സാങ്കേതിക വിദ്യകളും ഉണ്ട്. അത്തരം ഒരു രീതി ഉപയോഗിച്ച് പതിവ് പദപ്രയോഗങ്ങൾ ഉപയോഗിക്കുന്നത് ഉൾപ്പെടുന്നു awk കമാൻഡ്. Awk പാറ്റേൺ സ്കാനിംഗിനും പ്രോസസ്സിംഗിനുമുള്ള ശക്തമായ പ്രോഗ്രാമിംഗ് ഭാഷയാണ്. ഉപയോഗിച്ച് awk, കൂടുതൽ വഴക്കത്തോടെ നിങ്ങൾക്ക് സങ്കീർണ്ണമായ സ്ട്രിംഗ് പ്രവർത്തനങ്ങൾ നടത്താൻ കഴിയും. ഉദാഹരണത്തിന്, നിങ്ങൾക്ക് ഉപയോഗിക്കാം awk ഒരു സ്ട്രിംഗിനുള്ളിൽ ഒരു സബ്സ്ട്രിംഗിനായി തിരയുന്നതിനും പൊരുത്തം അടിസ്ഥാനമാക്കി പ്രവർത്തനങ്ങൾ നടപ്പിലാക്കുന്നതിനും.
മറ്റൊരു നൂതന സാങ്കേതികത ഉപയോഗിക്കുന്നത് ഉൾപ്പെടുന്നു sed കമാൻഡ്, ഇത് സ്ട്രീം എഡിറ്ററിനെ സൂചിപ്പിക്കുന്നു. Sed ഒരു ഡാറ്റ സ്ട്രീമിലോ ഫയലിലോ വാചകം പാഴ്സ് ചെയ്യുന്നതിനും രൂപാന്തരപ്പെടുത്തുന്നതിനും ഉപയോഗപ്രദമാണ്. നിങ്ങൾക്ക് ഉപയോഗിക്കാം sed ഒരു സബ്സ്ട്രിംഗിനായി തിരയുന്നതിനും പൊരുത്തപ്പെടുന്ന വാചകത്തിൽ പകരം വയ്ക്കലുകളോ മറ്റ് പ്രവർത്തനങ്ങളോ നടത്തുന്നതിന്. ഈ നൂതന രീതികൾ, കൂടുതൽ സങ്കീർണ്ണമാണെങ്കിലും, ബാഷ് സ്ക്രിപ്റ്റുകളിൽ ടെക്സ്റ്റ് പ്രോസസ്സിംഗിനുള്ള ശക്തമായ കഴിവുകൾ വാഗ്ദാനം ചെയ്യുന്നു, അത് അത്യാധുനിക സ്ട്രിംഗ് കൃത്രിമത്വങ്ങൾ ആവശ്യമുള്ള ടാസ്ക്കുകൾക്ക് അവയെ അമൂല്യമാക്കുന്നു.
ബാഷിലെ സ്ട്രിംഗ് കണ്ടെയ്ൻമെൻ്റിനെക്കുറിച്ച് പതിവായി ചോദിക്കുന്ന ചോദ്യങ്ങൾ
- ഒരു സ്ട്രിംഗിൽ ഒരു സബ്സ്ട്രിംഗ് അടങ്ങിയിട്ടുണ്ടോ എന്ന് ഞാൻ എങ്ങനെ പരിശോധിക്കും awk?
- ഒരു സ്ട്രിംഗിൽ ഒരു സബ്സ്ട്രിംഗ് അടങ്ങിയിട്ടുണ്ടോ എന്ന് പരിശോധിക്കാൻ awk, നിങ്ങൾക്ക് കമാൻഡ് ഉപയോഗിക്കാം: echo "$string" | awk '{if ($0 ~ /substring/) print "It's there!"}'
- എനിക്ക് ഉപയോഗിക്കാമോ sed ഒരു സബ്സ്ട്രിംഗ് പരിശോധിക്കാൻ?
- അതെ, നിങ്ങൾക്ക് ഉപയോഗിക്കാം sed കമാൻഡ് ഉപയോഗിച്ച് ഒരു സബ്സ്ട്രിംഗ് പരിശോധിക്കാൻ: echo "$string" | sed -n '/substring/p'
- ഉപയോഗിക്കുന്നതിൻ്റെ പ്രയോജനം എന്താണ് awk കഴിഞ്ഞു grep?
- Awk കൂടുതൽ ശക്തമായ ടെക്സ്റ്റ് പ്രോസസ്സിംഗ് കഴിവുകൾ നൽകുന്നു, കൂടാതെ പാറ്റേൺ പൊരുത്തങ്ങളെ അടിസ്ഥാനമാക്കിയുള്ള പ്രവർത്തനങ്ങൾ നടത്താനും കഴിയും, ഇത് അതിനെക്കാൾ ബഹുമുഖമാക്കുന്നു grep.
- ഒരു സബ്സ്ട്രിംഗിനായി തിരയുമ്പോൾ എനിക്ക് എങ്ങനെ കേസ് അവഗണിക്കാം?
- ഒരു സബ്സ്ട്രിംഗിനായി തിരയുമ്പോൾ കേസ് അവഗണിക്കാൻ, നിങ്ങൾക്ക് ഇത് ഉപയോഗിക്കാം -i കൂടെ ഓപ്ഷൻ grep: echo "$string" | grep -iq "substring"
- ഉപയോഗിക്കാൻ പറ്റുമോ regex കൂടെ if ബാഷിലെ പ്രസ്താവനകൾ?
- അതെ, നിങ്ങൾക്ക് regex ഉപയോഗിച്ച് ഉപയോഗിക്കാം if ഉപയോഗിച്ച് ബാഷിലെ പ്രസ്താവനകൾ =~ ഓപ്പറേറ്റർ: if [[ "$string" =~ regex ]]; then
ബാഷിലെ സ്ട്രിംഗ് കണ്ടെയ്ൻമെൻ്റിനെക്കുറിച്ചുള്ള അന്തിമ ചിന്തകൾ
ഒരു സ്ട്രിംഗിൽ ബാഷിൽ ഒരു സബ്സ്ട്രിംഗ് ഉണ്ടോ എന്ന് നിർണ്ണയിക്കുന്നത് സോപാധിക പ്രസ്താവനകൾ, grep കമാൻഡുകൾ, കേസ് സ്റ്റേറ്റ്മെൻ്റുകൾ എന്നിവയുൾപ്പെടെ നിരവധി രീതികൾ ഉപയോഗിച്ച് ചെയ്യാൻ കഴിയുന്ന ഒരു സാധാരണ ജോലിയാണ്. ഓരോ രീതിയും പ്രശ്നം പരിഹരിക്കുന്നതിന് ഒരു അദ്വിതീയ സമീപനം നൽകുന്നു, നിങ്ങളുടെ നിർദ്ദിഷ്ട ആവശ്യങ്ങൾ അടിസ്ഥാനമാക്കി ഏറ്റവും അനുയോജ്യമായ ഒന്ന് തിരഞ്ഞെടുക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു. ഈ സാങ്കേതിക വിദ്യകളിൽ പ്രാവീണ്യം നേടുന്നതിലൂടെ, നിങ്ങളുടെ ബാഷ് സ്ക്രിപ്റ്റുകളുടെ കാര്യക്ഷമതയും വായനാക്ഷമതയും വർദ്ധിപ്പിക്കാൻ നിങ്ങൾക്ക് കഴിയും.