പതിവായി ബാഷ് കമാൻഡ് ലൈനിലേക്കുള്ള അപ്‌ഡേറ്റുകൾ

N
നെറ്റൂസ്
ജനുവരി 31, 2020

RegEx (അല്ലെങ്കിൽ RegExp) എന്നത് ഒരു തിരയൽ പാറ്റേൺ നിർവചിക്കുന്ന പ്രതീകങ്ങളുടെ ഒരു കൂട്ടമാണ്. ഫൈൻഡ് ആൻഡ് റീപ്ലേസ് ഓപ്പറേഷനുകൾ ചെയ്യുന്നതിനും പാസ്‌വേഡ് നയം, ഫോൺ നമ്പർ എൻട്രി തുടങ്ങിയ അവസ്ഥകൾ പരിശോധിക്കുന്നതിനും അവ ഉപയോഗിക്കാം.

ഒരു സാധാരണ പദപ്രയോഗത്തിന്റെ ഒരു ഉദാഹരണം ഇതാ:

/t[aeiou]l/

ഈ പതിവ് പദപ്രയോഗം 't' എന്ന അക്ഷരത്തിൽ ആരംഭിക്കുന്ന, മധ്യഭാഗത്ത് 'aeio u' എന്ന ഏതെങ്കിലും അക്ഷരങ്ങൾ ഉൾക്കൊള്ളുന്ന, 'l' എന്ന അക്ഷരത്തിൽ അവസാനിക്കുന്ന ഒരു പദത്തിനായി നോക്കും. അത് 'ടെൽ', 'ടാൽ' അല്ലെങ്കിൽ 'ടിൽ' ആകാം. പൊരുത്തം 'ചരിവ്', 'ക്രൂരം' അല്ലെങ്കിൽ 'ടെലിഫോൺ' എന്നിങ്ങനെയുള്ള ഒരൊറ്റ പദമോ മറ്റൊരു വാക്കിന്റെ ഭാഗമോ ആകാം.

ഇപ്പോൾ, ബാഷ് ഷെൽ ഒരു ഉദാഹരണമായി ഉപയോഗിച്ച്, അടിസ്ഥാന റെഗുലർ എക്സ്പ്രഷനുകൾ നോക്കാം.

റെഗുലർ എക്സ്പ്രഷൻ അടിസ്ഥാനങ്ങൾ

'grep' കമാൻഡിന്റെ പൊതുവായ വാക്യഘടന ഇപ്രകാരമാണ്:

$ grep поисковый_запрос_regex расположение_файла

Metacharacters എന്നറിയപ്പെടുന്ന ചില പ്രത്യേക പ്രതീകങ്ങൾ നോക്കാം. കൂടുതൽ സങ്കീർണ്ണമായ തിരയൽ പദപ്രയോഗങ്ങൾ സൃഷ്ടിക്കാൻ അവ സഹായിക്കുന്നു:

. ഏത് കഥാപാത്രവുമായി പൊരുത്തപ്പെടും;
[] പ്രതീകങ്ങളുടെ ശ്രേണിയുമായി പൊരുത്തപ്പെടും;
[^ ] ചുരുണ്ട ബ്രേസുകളിൽ വ്യക്തമാക്കിയിട്ടുള്ളവ ഒഴികെ എല്ലാ പ്രതീകങ്ങളുമായി പൊരുത്തപ്പെടും;
* പൂജ്യം ഉൾപ്പെടെ, നക്ഷത്രചിഹ്നത്തിന് മുമ്പുള്ള എത്ര പ്രതീകങ്ങളുമായി പൊരുത്തപ്പെടും;
+ അതിന് മുമ്പുള്ള ഒന്നോ അതിലധികമോ പദപ്രയോഗങ്ങളുമായി പൊരുത്തപ്പെടും;
? പൂജ്യം അല്ലെങ്കിൽ അതിന് മുമ്പുള്ള പദപ്രയോഗങ്ങളിൽ ഒന്നുമായി പൊരുത്തപ്പെടും;
{n} മുമ്പത്തെ എക്സ്പ്രഷനുകളുടെ 'n' ആവർത്തനങ്ങളുമായി പൊരുത്തപ്പെടും;
{n,} മുമ്പത്തെ പദപ്രയോഗങ്ങളുടെ കുറഞ്ഞത് 'n' ആവർത്തനങ്ങളുമായി പൊരുത്തപ്പെടും;
{nm} മുമ്പത്തെ പദപ്രയോഗങ്ങളുടെ കുറഞ്ഞത് 'n' ഉം പരമാവധി 'm' ആവർത്തനങ്ങളുമായി പൊരുത്തപ്പെടും;
{,m} മുമ്പത്തെ പദപ്രയോഗങ്ങളുടെ 'm' ആവർത്തനങ്ങളോട് കൂടിയതോ തുല്യമോ പൊരുത്തപ്പെടും;
മെറ്റാക്യാരാക്‌ടറുകളിലൊന്ന് ഉൾപ്പെടുത്തേണ്ടിവരുമ്പോൾ ഉപയോഗിക്കുന്ന ഒരു രക്ഷപ്പെടൽ പ്രതീകമാണ് (എസ്‌കേപ്പ് ക്യാരക്ടർ).

ചില ഉദാഹരണങ്ങൾ ഇതാ:

. (പോയിന്റ്)

തിരയൽ അന്വേഷണത്തിൽ ദൃശ്യമാകുന്ന ഏത് പ്രതീകവുമായും പൊരുത്തപ്പെടുത്താൻ ഉപയോഗിക്കുന്നു. ഉദാഹരണത്തിന്, നമുക്ക് ഒരു ഡോട്ട് ഉപയോഗിക്കാം:

$ grep "d.g" file1

ഈ റെഗുലർ എക്‌സ്‌പ്രഷൻ അർത്ഥമാക്കുന്നത് നമ്മൾ 'd' എന്നതിൽ തുടങ്ങുന്നതും 'g' ൽ അവസാനിക്കുന്നതും 'file1' എന്ന പേരിലുള്ള ഫയലിന്റെ മധ്യത്തിൽ ഏതെങ്കിലും ഒരു പ്രതീകം ഉൾക്കൊള്ളുന്നതുമായ ഒരു പദത്തിനായി തിരയുന്നു എന്നാണ്. അതുപോലെ, ഞങ്ങളുടെ തിരയൽ പാറ്റേണിനായി നമുക്ക് ഡോട്ട് പ്രതീകം എത്ര തവണ വേണമെങ്കിലും ഉപയോഗിക്കാം:

T......h

ഈ തിരയൽ പദം 'T' ൽ ആരംഭിക്കുന്നതും 'h' ൽ അവസാനിക്കുന്നതും മധ്യത്തിൽ ഏതെങ്കിലും ആറ് പ്രതീകങ്ങൾ ഉൾക്കൊള്ളുന്നതുമായ ഒരു പദത്തിനായി തിരയും.

[]

പ്രതീകങ്ങളുടെ ഒരു ശ്രേണി നിർവചിക്കാൻ സ്ക്വയർ ബ്രാക്കറ്റുകൾ ഉപയോഗിക്കുന്നു. ഉദാഹരണത്തിന്, ഒരു ഡോട്ടിന്റെ കാര്യത്തിലെന്നപോലെ, ഏതെങ്കിലും പ്രതീകമല്ല, ലിസ്‌റ്റ് ചെയ്‌തിരിക്കുന്ന ഒരു പ്രതീകത്തിനായി നിങ്ങൾ തിരയേണ്ടിവരുമ്പോൾ:

$ grep "N[oen]n" file2

ഇവിടെ നമ്മൾ 'N' ൽ തുടങ്ങി 'n' ൽ അവസാനിക്കുന്ന ഒരു വാക്ക് തിരയുകയാണ്, നടുവിൽ 'o', 'e' അല്ലെങ്കിൽ 'n' മാത്രമേ ഉണ്ടാകൂ. സ്ക്വയർ ബ്രാക്കറ്റുകളിൽ നിങ്ങൾക്ക് എത്ര പ്രതീകങ്ങൾ വേണമെങ്കിലും ഉപയോഗിക്കാം. 'ae' അല്ലെങ്കിൽ '1-18' പോലുള്ള ശ്രേണികൾ പൊരുത്തപ്പെടുന്ന പ്രതീകങ്ങളുടെ ഒരു ബ്രാക്കറ്റഡ് ലിസ്റ്റായി നമുക്ക് നിർവചിക്കാം.

[^ ]

റെഗുലർ എക്സ്പ്രഷനുകൾക്കുള്ള നിഷേധ ഓപ്പറേറ്ററിന് സമാനമാണ് ഇത്. [^ ] ഉപയോഗിക്കുന്നത് അർത്ഥമാക്കുന്നത് തിരച്ചിലിൽ ചതുര ബ്രാക്കറ്റുകളിലുള്ളവ ഒഴികെയുള്ള എല്ലാ പ്രതീകങ്ങളും ഉൾപ്പെടും എന്നാണ്. ഉദാഹരണത്തിന്:

$ grep "St[^1-9]d" file3

1 മുതൽ 9 വരെയുള്ള അക്കങ്ങൾ അടങ്ങിയിട്ടില്ലാത്ത, 'St' ൽ ആരംഭിക്കുന്ന, 'd' ൽ അവസാനിക്കുന്ന എല്ലാ വാക്കുകളും നമുക്ക് ഉണ്ടായിരിക്കാം എന്നാണ് ഇതിനർത്ഥം.

ഒരു പ്രതീകം മാത്രം നോക്കുന്ന പതിവ് പദപ്രയോഗങ്ങളുടെ ഉദാഹരണങ്ങളാണ് ഞങ്ങൾ ഇതുവരെ ഉപയോഗിച്ചത്. എന്നാൽ മറ്റ് സന്ദർഭങ്ങളിൽ എന്തുചെയ്യണം? ഉദാഹരണത്തിന്, ഒരു പ്രതീകത്തിൽ ആരംഭിക്കുന്നതോ അവസാനിക്കുന്നതോ ആയ എല്ലാ വാക്കുകളും കണ്ടെത്താൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, അല്ലെങ്കിൽ മധ്യത്തിൽ എത്ര പ്രതീകങ്ങൾ അടങ്ങിയിരിക്കാം. ഈ ടാസ്‌ക് കൈകാര്യം ചെയ്യുന്നത് ക്വാണ്ടിഫയർ മെറ്റാ ക്യാരക്‌ടറുകൾ എന്ന് വിളിക്കപ്പെടുന്നവയാണ്, ഇത് മുമ്പത്തെ എക്‌സ്‌പ്രഷൻ എത്ര തവണ സംഭവിക്കാമെന്ന് നിർണ്ണയിക്കുന്നു: + * & ?

{n}, {nm}, {n, } അല്ലെങ്കിൽ {,m} എന്നിവ സാധാരണ പദപ്രയോഗങ്ങളുടെ അടിസ്ഥാനത്തിൽ നമുക്ക് ഉപയോഗിക്കാവുന്ന മറ്റ് ക്വാണ്ടിഫയറുകളുടെ ഉദാഹരണങ്ങളാണ്.

* (നക്ഷത്രചിഹ്നം)

ഇനിപ്പറയുന്ന ഉദാഹരണം 'k' എന്ന അക്ഷരത്തിന്റെ എല്ലാ സംഭവങ്ങളും കാണിക്കുന്നു, അതിൽ ഒന്നുമില്ല:

$ grep "lak*" file4

ഇതിനർത്ഥം നമുക്ക് 'തടാകം' അല്ലെങ്കിൽ 'ല' അല്ലെങ്കിൽ 'ലക്കക്ക്' എന്നിവ പൊരുത്തപ്പെടുത്താനാകും.

+

ഇനിപ്പറയുന്ന പാറ്റേണിന് പൊരുത്തപ്പെടുന്നതിന് ഒരു സ്‌ട്രിംഗിൽ 'k' എന്ന അക്ഷരത്തിന്റെ ഒരെണ്ണമെങ്കിലും ആവശ്യമാണ്:

$ grep "lak+" file5

ഇവിടെ 'k' എന്ന അക്ഷരം ഒരിക്കലെങ്കിലും പ്രത്യക്ഷപ്പെടണം, അതിനാൽ ഞങ്ങളുടെ ഫലങ്ങൾ 'തടാകം' അല്ലെങ്കിൽ 'lakkkkk' ആകാം, പക്ഷേ 'la' അല്ല.

?

ഇനിപ്പറയുന്ന ടെംപ്ലേറ്റിൽ, ഫലം bb അല്ലെങ്കിൽ bab എന്ന സ്ട്രിംഗ് ആയിരിക്കും:

$ grep "ba?b" file6

നൽകിയിരിക്കുന്ന ക്വാണ്ടിഫയർ ഉപയോഗിച്ച് '?' നമുക്ക് ഒരു കഥാപാത്രത്തിന്റെ ഒരു സംഭവം ഉണ്ടാകാം അല്ലെങ്കിൽ ഒന്നുമില്ല.

പ്രധാനപ്പെട്ട കുറിപ്പ്! നമുക്ക് ഒരു സാധാരണ പദപ്രയോഗം ഉണ്ടെന്ന് പറയാം:

$ grep "S.*l" file7

'സ്മാൾ', 'സില്ലി', 'സൂസൻ പന്ത് കളിക്കാൻ അൽപ്പം' എന്നീ ഫലങ്ങൾ നമുക്ക് ലഭിക്കും. പക്ഷേ, വാചകം മുഴുവനായി കാണാതെ വാക്കുകൾ മാത്രം തിരയുമ്പോൾ 'സൂസൻ പന്ത് കളിക്കാൻ ചെറുതാണ്' എന്ന് നമുക്ക് ലഭിച്ചത് എന്തുകൊണ്ട്?

കാര്യം, ഈ വാചകം ഞങ്ങളുടെ തിരയൽ മാനദണ്ഡങ്ങളുമായി പൊരുത്തപ്പെടുന്നു: ഇത് 'S' എന്ന അക്ഷരത്തിൽ ആരംഭിക്കുന്നു, മധ്യത്തിൽ എത്ര പ്രതീകങ്ങൾ ഉണ്ടെങ്കിലും 'l' എന്ന അക്ഷരത്തിൽ അവസാനിക്കുന്നു. അതിനാൽ മുഴുവൻ വാക്യങ്ങൾക്കും പകരം വാക്കുകൾ മാത്രമേ ഔട്ട്‌പുട്ടായി ലഭിക്കൂ എന്നതിനാൽ നമ്മുടെ റീജക്‌സ് ശരിയാക്കാൻ നമുക്ക് എന്തുചെയ്യാനാകും.

ഇത് ചെയ്യുന്നതിന്, ക്വാണ്ടിഫയർ ചേർക്കുക '?' പതിവ് പദപ്രയോഗത്തിലേക്ക്:

$ grep "S.*?l" file7

അല്ലെങ്കിൽ ഒരു രക്ഷപ്പെടൽ കഥാപാത്രം

ഒരു മെറ്റാക്യാരാക്റ്റർ അല്ലെങ്കിൽ ഒരു സാധാരണ പദപ്രയോഗത്തിന് പ്രത്യേക അർത്ഥമുള്ള ഒരു പ്രതീകം ഉൾപ്പെടുത്തേണ്ടത് ആവശ്യമായി വരുമ്പോൾ '' പ്രതീകം ഉപയോഗിക്കുന്നു. ഉദാഹരണത്തിന്, ഒരു ഡോട്ടിൽ അവസാനിക്കുന്ന എല്ലാ വാക്കുകളും കണ്ടെത്താൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നു. ഇതിനായി നമുക്ക് പദപ്രയോഗം ഉപയോഗിക്കാം:

$ grep "S.*?." file8

ഇത് ഒരു ഡോട്ടിൽ അവസാനിക്കുന്ന എല്ലാ വാക്കുകളും തിരയുകയും പൊരുത്തപ്പെടുത്തുകയും ചെയ്യും.

അതിനാൽ, പതിവ് പദപ്രയോഗങ്ങൾ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്നതിനെക്കുറിച്ചുള്ള അടിസ്ഥാന ധാരണ നിങ്ങൾക്ക് ലഭിച്ചു. കഴിയുന്നത്ര പരിശീലിക്കുക, പതിവ് പദപ്രയോഗങ്ങൾ സൃഷ്ടിക്കുക, കഴിയുന്നത്ര തവണ അവ നിങ്ങളുടെ ജോലിയിൽ ഉൾപ്പെടുത്താൻ ശ്രമിക്കുക. ഒരു പ്രത്യേക ഉദാഹരണത്തിൽ നിങ്ങളുടെ പതിവ് പദപ്രയോഗങ്ങൾ ഉപയോഗിക്കുന്നതിന്റെ കൃത്യത നിങ്ങൾക്ക് പരിശോധിക്കാം സൈറ്റ് .

നിങ്ങളുടെ ക്ലൗഡ് യാത്ര ആരംഭിക്കണോ? ഇപ്പോൾ തന്നെ ആദ്യപടി സ്വീകരിക്കുക.