റെഗുലർ എക്സ്പ്രഷനുകൾ ഉപയോഗിച്ച് പ്ലെയിൻ-ടെക്സ്റ്റ് ഡാറ്റ തിരയാനുള്ള 6 മികച്ച CLI ടൂളുകൾ


ടെക്സ്റ്റ് ഫയലുകളിൽ പൊരുത്തപ്പെടുന്ന സ്ട്രിംഗുകളോ പാറ്റേണുകളോ തിരയുന്നതിനായി ഉപയോഗിക്കുന്ന ചില മികച്ച കമാൻഡ്-ലൈൻ ടൂളുകളുടെ ഒരു ടൂർ ഈ ഗൈഡ് നടത്തുന്നു. ഈ ടൂളുകൾ സാധാരണയായി റെഗുലർ എക്സ്പ്രഷനുകൾക്കൊപ്പമാണ് ഉപയോഗിക്കുന്നത് - REGEX എന്ന് ചുരുക്കി - ഒരു തിരയൽ പാറ്റേൺ വിവരിക്കുന്നതിനുള്ള അതുല്യമായ സ്ട്രിംഗുകളാണ്.

കൂടുതൽ ആലോചനകളില്ലാതെ, നമുക്ക് മുങ്ങാം.

1. ഗ്രെപ്പ് കമാൻഡ്

ഗ്രെപ്പ് യൂട്ടിലിറ്റി ടൂൾ ആണ് ആദ്യം വരുന്നത് - ഗ്ലോബൽ റെഗുലർ എക്uസ്uപ്രഷൻ പ്രിന്റിന്റെ ചുരുക്കപ്പേരാണ്, ഒരു പ്രത്യേക സ്uട്രിങ്ങ് അല്ലെങ്കിൽ ഒരു ഫയലിൽ ഒരു പാറ്റേൺ തിരയുമ്പോൾ അത് ഉപയോഗപ്രദമാകുന്ന ഒരു ശക്തമായ കമാൻഡ്-ലൈൻ ടൂളാണ്.

ഡിഫോൾട്ടായി ആധുനിക ലിനക്സ് വിതരണങ്ങൾ Grep ഷിപ്പ് ചെയ്യുകയും വിവിധ തിരയൽ ഫലങ്ങൾ നൽകുന്നതിനുള്ള വഴക്കം നൽകുകയും ചെയ്യുന്നു. grep ഉപയോഗിച്ച്, നിങ്ങൾക്ക് ഇനിപ്പറയുന്നതുപോലുള്ള പ്രവർത്തനങ്ങളുടെ ഒരു വലിയ ശ്രേണി നിർവഹിക്കാൻ കഴിയും:

  • ഒരു ഫയലിൽ സ്ട്രിംഗുകൾ അല്ലെങ്കിൽ പൊരുത്തപ്പെടുന്ന പാറ്റേണുകൾക്കായി തിരയുക.
  • Gzipped ഫയലുകളിൽ സ്ട്രിംഗുകൾ അല്ലെങ്കിൽ പൊരുത്തപ്പെടുന്ന പാറ്റേണുകൾക്കായി തിരയുക.
  • സ്ട്രിംഗ് പൊരുത്തങ്ങളുടെ എണ്ണം എണ്ണുക.
  • സ്uട്രിംഗ് അല്ലെങ്കിൽ പാറ്റേൺ അടങ്ങിയിരിക്കുന്ന ലൈൻ നമ്പറുകൾ പ്രിന്റ് ചെയ്യുക.
  • ഡയറക്uടറികളിലെ സ്uട്രിങ്ങിനായി ആവർത്തിച്ച് തിരയുക.
  • ഒരു റിവേഴ്സ് തിരയൽ നടത്തുക (അതായത്, തിരയൽ മാനദണ്ഡവുമായി പൊരുത്തപ്പെടാത്ത സ്ട്രിംഗുകളുടെ ഫലങ്ങൾ പ്രദർശിപ്പിക്കുക).
  • സ്ട്രിംഗുകൾക്കായി തിരയുമ്പോൾ കേസ് സെൻസിറ്റിവിറ്റി അവഗണിക്കുക.

grep കമാൻഡ് ഉപയോഗിക്കുന്നതിനുള്ള വാക്യഘടന വളരെ ലളിതമാണ്:

$ grep pattern FILE

ഉദാഹരണത്തിന്, ഒരു ഫയലിൽ 'Linux' എന്ന സ്ട്രിംഗ് തിരയാൻ, hello.txt എന്ന് പറയുക, കേസ് സെൻസിറ്റിവിറ്റി അവഗണിക്കുമ്പോൾ, കമാൻഡ് പ്രവർത്തിപ്പിക്കുക:

$ grep -i Linux hello.txt

നിങ്ങൾക്ക് grep-നൊപ്പം ഉപയോഗിക്കാനാകുന്ന കൂടുതൽ ഓപ്ഷനുകൾ ലഭിക്കുന്നതിന്, കൂടുതൽ വിപുലമായ grep കമാൻഡ് ഉദാഹരണങ്ങളുടെ ഉദാഹരണങ്ങൾ ഞങ്ങളുടെ ലേഖനം വായിക്കുക.

2. സെഡ് കമാൻഡ്

ഒരു ടെക്സ്റ്റ് ഫയലിലെ കൃത്രിമ ടെക്സ്റ്റ്. തന്നിരിക്കുന്ന ഫയലിലെ സ്ട്രിംഗുകൾ സംവേദനാത്മകമല്ലാത്ത രീതിയിൽ തിരയുകയും ഫിൽട്ടർ ചെയ്യുകയും മാറ്റിസ്ഥാപിക്കുകയും ചെയ്യുന്നു.

സ്ഥിരസ്ഥിതിയായി, sed കമാൻഡ് ഔട്ട്uപുട്ട് STDOUT (സ്റ്റാൻഡേർഡ് ഔട്ട്) ആയി പ്രിന്റ് ചെയ്യുന്നു, ഇത് എക്സിക്യൂഷന്റെ ഫലം ഒരു ഫയലിൽ സേവ് ചെയ്യുന്നതിനുപകരം ടെർമിനലിൽ പ്രിന്റ് ചെയ്യപ്പെടുന്നു.

സെഡ് കമാൻഡ് ഇനിപ്പറയുന്ന രീതിയിൽ പ്രയോഗിക്കുന്നു:

$ sed -OPTIONS command [ file to be edited ]

ഉദാഹരണത്തിന്, 'Unix' ന്റെ എല്ലാ സന്ദർഭങ്ങളും 'Linux' ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കുന്നതിന്, കമാൻഡ് അഭ്യർത്ഥിക്കുക:

$ sed 's/Unix/Linux' hello.txt

ഔട്ട്uപുട്ട് ടെർമിനലിൽ പ്രിന്റ് ചെയ്യുന്നതിനു പകരം റീഡയറക്uട് ചെയ്യണമെങ്കിൽ, കാണിച്ചിരിക്കുന്നതുപോലെ റീഡയറക്ഷൻ ചിഹ്നം ( > ) ഉപയോഗിക്കുക.

$ sed 's/Unix/Linux' hello.txt > output.txt

കമാൻഡിന്റെ ഔട്ട്പുട്ട് സ്ക്രീനിൽ പ്രിന്റ് ചെയ്യുന്നതിനുപകരം output.txt ഫയലിൽ സംരക്ഷിക്കപ്പെടുന്നു.

ഉപയോഗിക്കാനാകുന്ന കൂടുതൽ ഓപ്ഷനുകൾ പരിശോധിക്കുന്നതിന്, മാൻ പേജുകൾ ഒരിക്കൽ കൂടി പരിശോധിക്കുക.

$ man sed

3. ആക്ക് കമാൻഡ്

പേളിൽ എഴുതിയിരിക്കുന്ന വേഗതയേറിയതും കൊണ്ടുപോകാവുന്നതുമായ കമാൻഡ്-ലൈൻ ടൂളാണ് Ack. ഗ്രെപ്പ് യൂട്ടിലിറ്റിക്ക് സൗഹാർദ്ദപരമായ പകരക്കാരനായി ആക്ക് കണക്കാക്കപ്പെടുന്നു, കൂടാതെ ഔട്ട്പുട്ടുകൾ കാഴ്ചയിൽ ആകർഷകമായ രീതിയിൽ ഫലങ്ങൾ നൽകുന്നു.

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

Ack കമാൻഡ് വാക്യഘടന:

$ ack [options] PATTERN [FILE...]
$ ack -f [options] [DIRECTORY...]

ഉദാഹരണത്തിന്, Linux എന്ന തിരയൽ പദം പരിശോധിക്കാൻ, പ്രവർത്തിപ്പിക്കുക:

$ ack Linux hello.txt

സെർച്ച് ടൂൾ വളരെ ബുദ്ധിപരമാണ്, ഉപയോക്താവ് ഫയലോ ഡയറക്ടറിയോ നൽകിയിട്ടില്ലെങ്കിൽ, അത് തിരയൽ പാറ്റേണിനായി നിലവിലെ ഡയറക്ടറിയിലും ഉപഡയറക്uടറികളിലും തിരയുന്നു.

ചുവടെയുള്ള ഉദാഹരണത്തിൽ, ഫയലോ ഡയറക്uടറിയോ നൽകിയിട്ടില്ല, എന്നാൽ ലഭ്യമായ ഫയൽ ack സ്വയമേവ കണ്ടെത്തുകയും നൽകിയിരിക്കുന്ന മാച്ചിംഗ് പാറ്റേണിനായി തിരയുകയും ചെയ്തു.

$ ack Linux

നിങ്ങളുടെ സിസ്റ്റത്തിൽ ack ഇൻസ്റ്റാൾ ചെയ്യുന്നതിന് കമാൻഡ് പ്രവർത്തിപ്പിക്കുക:

$ sudo apt install ack-grep    [On Debian/Ubuntu]
$ sudo dnf install ack-grep    [On CentOS/RHEL]

4. Awk കമാൻഡ്

Awk ഒരു പൂർണ്ണമായ സ്uക്രിപ്റ്റിംഗ് ഭാഷയാണ്, കൂടാതെ ഒരു ടെക്uസ്uറ്റ് പ്രോസസ്സിംഗും ഡാറ്റാ കൃത്രിമത്വ ഉപകരണവുമാണ്. സെർച്ച് പാറ്റേൺ അടങ്ങിയ ഫയലുകളോ പ്രോഗ്രാമുകളോ ഇത് തിരയുന്നു. സ്uട്രിംഗോ പാറ്റേണോ കണ്ടെത്തുമ്പോൾ, പൊരുത്തത്തിലോ ലൈനിലോ awk നടപടിയെടുക്കുകയും STDOUT-ൽ ഫലങ്ങൾ പ്രിന്റ് ചെയ്യുകയും ചെയ്യുന്നു.

AWK പാറ്റേൺ ചുരുണ്ട ബ്രേസുകൾക്കിടയിൽ ഘടിപ്പിച്ചിരിക്കുന്നു, മുഴുവൻ പ്രോഗ്രാമും ഒറ്റ ഉദ്ധരണികളിൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്.

ഏറ്റവും ലളിതമായ ഉദാഹരണം എടുക്കാം. കാണിച്ചിരിക്കുന്നതുപോലെ നിങ്ങളുടെ സിസ്റ്റത്തിന്റെ തീയതി നിങ്ങൾ അച്ചടിക്കുകയാണെന്ന് കരുതുക:

$ date

ആഴ്ചയിലെ ദിവസമായ ആദ്യ മൂല്യം മാത്രം പ്രിന്റ് ചെയ്യാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെന്ന് കരുതുക. അങ്ങനെയെങ്കിൽ, കാണിച്ചിരിക്കുന്നതുപോലെ ഔട്ട്പുട്ട് awk-ലേക്ക് പൈപ്പ് ചെയ്യുക:

$ date | awk '{print $1}'

തുടർന്നുള്ള മൂല്യങ്ങൾ പ്രദർശിപ്പിക്കുന്നതിന്, കാണിച്ചിരിക്കുന്നതുപോലെ ഒരു കോമ ഉപയോഗിച്ച് അവയെ വേർതിരിക്കുക:

$ date | awk '{print $1,$2}'

മുകളിലുള്ള കമാൻഡ് ആഴ്ചയിലെ ദിവസവും മാസത്തിലെ തീയതിയും പ്രദർശിപ്പിക്കും.

നിങ്ങൾക്ക് awk-നൊപ്പം ഉപയോഗിക്കാനാകുന്ന കൂടുതൽ ഓപ്ഷനുകൾ ലഭിക്കാൻ, ഞങ്ങളുടെ awk കമാൻഡ് സീരീസ് വായിക്കുക.

5. സിൽവർ സെർച്ചർ

സിൽവർ സെർച്ചർ ഒരു ക്രോസ്-പ്ലാറ്റ്uഫോമും ഓപ്പൺ സോഴ്uസ് കോഡും തിരയുന്നതിനുള്ള ഉപകരണമാണ്, എന്നാൽ വേഗതയ്ക്ക് ഊന്നൽ നൽകുന്നു. സാധ്യമായ ഏറ്റവും കുറഞ്ഞ സമയത്തിനുള്ളിൽ ഫയലുകൾക്കുള്ളിൽ ഒരു നിർദ്ദിഷ്uട സ്uട്രിംഗിനായി തിരയുന്നത് ഇത് നിങ്ങളെ എളുപ്പമാക്കുന്നു:

വാക്യഘടന:

$ ag OPTIONS search_pattern /path/to/file

ഉദാഹരണത്തിന്, hello.txt ഫയലിൽ 'Linux' എന്ന സ്ട്രിംഗ് തിരയാൻ കമാൻഡ് അഭ്യർത്ഥിക്കുക:

$ ag Linux hello.txt

കൂടുതൽ ഓപ്ഷനുകൾക്കായി, മാൻ പേജുകൾ സന്ദർശിക്കുക:

$ man ag

6. റിപ്പ്ഗ്രെപ്പ്

അവസാനമായി, ഞങ്ങൾക്ക് ripgrep കമാൻഡ്-ലൈൻ ടൂൾ ഉണ്ട്. റിജക്സ് പാറ്റേണുകൾ തിരയുന്നതിനുള്ള ഒരു ക്രോസ്-പ്ലാറ്റ്ഫോം യൂട്ടിലിറ്റിയാണ് Ripgrep. നേരത്തെ സൂചിപ്പിച്ച എല്ലാ സെർച്ച് ടൂളുകളേക്കാളും ഇത് വളരെ വേഗതയുള്ളതും പൊരുത്തപ്പെടുന്ന പാറ്റേണുകൾക്കായി ഡയറക്uടറികൾ ആവർത്തിച്ച് തിരയുന്നതുമാണ്. വേഗതയുടെയും പ്രകടനത്തിന്റെയും കാര്യത്തിൽ, Ripgrep എന്ന മറ്റൊരു ഉപകരണവും വേറിട്ടുനിൽക്കുന്നില്ല.

സ്ഥിരസ്ഥിതിയായി, ripgrep ബൈനറി ഫയലുകൾ/മറഞ്ഞിരിക്കുന്ന ഫയലുകൾ, ഡയറക്uടറികൾ എന്നിവ ഒഴിവാക്കും. കൂടാതെ, .gitignore/.ignore/.rgignore ഫയലുകൾ അവഗണിച്ച ഫയലുകൾക്കായി ഡിഫോൾട്ടായി ഇത് തിരയില്ല എന്നതും ശ്രദ്ധിക്കുക.

നിർദ്ദിഷ്ട ഫയൽ തരങ്ങൾക്കായി തിരയാനും Ripgrep നിങ്ങളെ അനുവദിക്കുന്നു. ഉദാഹരണത്തിന്, നിങ്ങളുടെ തിരയൽ Javascript ഫയലുകളിലേക്ക് പരിമിതപ്പെടുത്തുന്നതിന് പ്രവർത്തിപ്പിക്കുക:

$ rg -Tsj

ripgrep ഉപയോഗിക്കുന്നതിനുള്ള വാക്യഘടന വളരെ എളുപ്പമാണ്:

$ rg [OPTIONS] PATTERN [PATH...]

ഉദാഹരണത്തിന്. നിലവിലെ ഡയറക്uടറിക്കുള്ളിൽ സ്ഥിതിചെയ്യുന്ന ഫയലുകളിൽ 'ലിനക്സ്' എന്ന സ്ട്രിംഗിന്റെ ഉദാഹരണങ്ങൾക്കായി തിരയാൻ, കമാൻഡ് പ്രവർത്തിപ്പിക്കുക:

$ rg Linux

നിങ്ങളുടെ സിസ്റ്റത്തിൽ ripgrep ഇൻസ്റ്റാൾ ചെയ്യുന്നതിന് ഇനിപ്പറയുന്ന കമാൻഡുകൾ പ്രവർത്തിപ്പിക്കുക:

$ sudo apt install ripgrep      [On Debian/Ubuntu]
$ sudo pacman -S ripgrep        [On Arch Linux]
$ sudo zypper install ripgrep   [On OpenSuse]
$ sudo dnf install ripgrep      [On CentOS/RHEL/Fedora]

കൂടുതൽ ഓപ്ഷനുകൾക്കായി, മാൻ പേജുകൾ സന്ദർശിക്കുക:

$ man rg

ലിനക്സിൽ ടെക്സ്റ്റ് തിരയുന്നതിനും ഫിൽട്ടർ ചെയ്യുന്നതിനും കൈകാര്യം ചെയ്യുന്നതിനുമായി ഏറ്റവും വ്യാപകമായി ഉപയോഗിക്കുന്ന കമാൻഡ്-ലൈൻ ടൂളുകളിൽ ചിലത് ഇവയാണ്. ഞങ്ങൾ ഉപേക്ഷിച്ചതായി നിങ്ങൾക്ക് തോന്നുന്ന മറ്റ് ടൂളുകൾ ഉണ്ടെങ്കിൽ, അഭിപ്രായ വിഭാഗത്തിൽ ഞങ്ങളെ അറിയിക്കുക.