Linux grep കമാൻഡിന്റെ 12 പ്രായോഗിക ഉദാഹരണങ്ങൾ


ഒരു ഫയലിൽ ഒരു പ്രത്യേക സ്ട്രിംഗ് അല്ലെങ്കിൽ പാറ്റേൺ തിരയാനുള്ള ചുമതല നിങ്ങൾ എപ്പോഴെങ്കിലും നേരിട്ടിട്ടുണ്ടോ, എന്നിട്ടും എവിടെ നിന്ന് നോക്കണം എന്ന് അറിയില്ലേ? എങ്കിൽ, ഇതാ രക്ഷയ്uക്കുള്ള ഗ്രെപ്പ്!

ലിനക്സിന്റെ എല്ലാ വിതരണത്തിലും സജ്ജീകരിച്ചിരിക്കുന്ന ഒരു ശക്തമായ ഫയൽ പാറ്റേൺ സെർച്ചറാണ് grep. ഒരു കാരണവശാലും, ഇത് നിങ്ങളുടെ സിസ്റ്റത്തിൽ ഇൻസ്റ്റാൾ ചെയ്തിട്ടില്ലെങ്കിൽ, നിങ്ങളുടെ പാക്കേജ് മാനേജർ വഴി നിങ്ങൾക്ക് ഇത് എളുപ്പത്തിൽ ഇൻസ്റ്റാൾ ചെയ്യാൻ കഴിയും (Debian/Ubuntu-ലും yum-ലും RHEL/CentOS/Fedora-ൽ apt-get).

$ sudo apt-get install grep         #Debian/Ubuntu
$ sudo yum install grep             #RHEL/CentOS/Fedora

ഗ്രെപ്പ് ഉപയോഗിച്ച് നിങ്ങളുടെ പാദങ്ങൾ നനയ്ക്കാനുള്ള ഏറ്റവും എളുപ്പമാർഗ്ഗം, യഥാർത്ഥ ലോകത്തിന്റെ ചില ഉദാഹരണങ്ങൾ ഉപയോഗിക്കുന്നതിന് നേരെ ഡൈവ് ചെയ്യുകയാണെന്ന് ഞാൻ കണ്ടെത്തി.

1. ഫയലുകൾ തിരയുക, കണ്ടെത്തുക

നിങ്ങളുടെ മെഷീനിൽ പുതിയ ഉബുണ്ടുവിന്റെ ഒരു പുതിയ പകർപ്പ് നിങ്ങൾ ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടെന്നും പൈത്തൺ സ്uക്രിപ്റ്റിംഗിന് നിങ്ങൾ ഒരു ഷോട്ട് നൽകാൻ പോകുകയാണെന്നും പറയാം. ട്യൂട്ടോറിയലുകൾക്കായി നിങ്ങൾ വെബിൽ പരതുകയാണ്, പക്ഷേ പൈത്തണിന്റെ രണ്ട് വ്യത്യസ്ത പതിപ്പുകൾ ഉപയോഗത്തിലുണ്ടെന്ന് നിങ്ങൾ കാണുന്നു, കൂടാതെ ഉബുണ്ടു ഇൻസ്റ്റാളർ നിങ്ങളുടെ സിസ്റ്റത്തിൽ ഏതാണ് ഇൻസ്റ്റാൾ ചെയ്തതെന്നോ അത് ഏതെങ്കിലും മൊഡ്യൂളുകൾ ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടോ എന്നോ നിങ്ങൾക്കറിയില്ല. ഈ കമാൻഡ് ലളിതമായി പ്രവർത്തിപ്പിക്കുക:

# dpkg -l | grep -i python
ii  python2.7                        2.7.3-0ubuntu3.4                    Interactive high-level object-oriented language (version 2.7)
ii  python2.7-minimal                2.7.3-0ubuntu3.4                    Minimal subset of the Python language (version 2.7)
ii  python-openssl                   0.12-1ubuntu2.1                     Python wrapper around the OpenSSL library
ii  python-pam                       0.4.2-12.2ubuntu4                   A Python interface to the PAM library

ആദ്യം, ഞങ്ങൾ dpkg –l പ്രവർത്തിപ്പിച്ചു, അത് നിങ്ങളുടെ സിസ്റ്റത്തിൽ ഇൻസ്റ്റാൾ ചെയ്ത *.deb പാക്കേജുകൾ ലിസ്റ്റ് ചെയ്യുന്നു. രണ്ടാമതായി, ഞങ്ങൾ ആ ഔട്ട്uപുട്ട് grep-i python-ലേക്ക് പൈപ്പ് ചെയ്തു, അത്\grep-ലേക്ക് പോയി ഫിൽട്ടർ ചെയ്ത് അതിൽ 'പൈത്തൺ' ഉപയോഗിച്ച് എല്ലാം തിരികെ നൽകുക. grep കേസ്-സെൻസിറ്റീവ് ആയതിനാൽ അവഗണിക്കാൻ -i ഓപ്ഷൻ ഉണ്ട്.-i ഓപ്ഷൻ ഉപയോഗിക്കുന്നത് ഒരു നല്ല ശീലമാണ്, തീർച്ചയായും നിങ്ങൾ കൂടുതൽ നിർദ്ദിഷ്ട തിരയലിലേക്ക് ശ്രമിക്കുകയാണെങ്കിൽ.

2. ഫയലുകൾ തിരയുക, ഫിൽട്ടർ ചെയ്യുക

വ്യക്തിഗത ഫയലുകളിലോ ഒന്നിലധികം ഫയലുകളിലോ തിരയാനും ഫിൽട്ടർ ചെയ്യാനും grep ഉപയോഗിക്കാം. ഈ സാഹചര്യം എടുക്കാം:

നിങ്ങളുടെ അപ്പാച്ചെ വെബ് സെർവറിൽ നിങ്ങൾക്ക് ചില പ്രശ്uനങ്ങളുണ്ട്, കൂടാതെ കുറച്ച് സഹായം അഭ്യർത്ഥിച്ച് നെറ്റിലെ നിരവധി ആകർഷണീയമായ ഫോറങ്ങളിൽ ഒന്നിലേക്ക് നിങ്ങൾ എത്തി. നിങ്ങൾക്ക് മറുപടി നൽകുന്ന ദയയുള്ള ആത്മാവ് നിങ്ങളുടെ /etc/apache2/sites-available/default-ssl ഫയലിലെ ഉള്ളടക്കങ്ങൾ പോസ്റ്റ് ചെയ്യാൻ നിങ്ങളോട് ആവശ്യപ്പെട്ടിട്ടുണ്ട്. കമന്റിട്ട എല്ലാ വരികളും നീക്കം ചെയ്യാൻ കഴിയുമെങ്കിൽ, നിങ്ങൾക്കും നിങ്ങളെ സഹായിക്കുന്ന വ്യക്തിക്കും അത് വായിക്കുന്ന എല്ലാവർക്കും എളുപ്പമായിരിക്കില്ലേ? ശരി, നിങ്ങൾക്ക് കഴിയും! ഇത് പ്രവർത്തിപ്പിക്കുക:

# grep –v “#”  /etc/apache2/sites-available/default-ssl

-v ഓപ്uഷൻ അതിന്റെ ഔട്ട്uപുട്ട് വിപരീതമാക്കാൻ grep-നോട് പറയുന്നു, അതിനർത്ഥം പൊരുത്തപ്പെടുന്ന ലൈനുകൾ അച്ചടിക്കുന്നതിനുപകരം, വിപരീതം ചെയ്യുകയും എക്uസ്uപ്രഷനുമായി പൊരുത്തപ്പെടാത്ത എല്ലാ വരികളും പ്രിന്റ് ചെയ്യുകയും ചെയ്യുക, ഈ സാഹചര്യത്തിൽ, # കമന്റ് ചെയ്ത വരികൾ.

3. എല്ലാ .mp3 ഫയലുകളും മാത്രം കണ്ടെത്തുക

stdout-ൽ നിന്ന് ഫിൽട്ടർ ചെയ്യുന്നതിന് grep വളരെ ഉപയോഗപ്രദമാകും. ഉദാഹരണത്തിന്, നിങ്ങൾക്ക് വ്യത്യസ്ത ഫോർമാറ്റുകളുടെ ഒരു കൂട്ടം സംഗീത ഫയലുകൾ നിറഞ്ഞ ഒരു ഫോൾഡർ ഉണ്ടെന്ന് പറയാം. JayZ എന്ന കലാകാരന്റെ എല്ലാ *.mp3 ഫയലുകളും നിങ്ങൾക്ക് കണ്ടെത്തണം, എന്നാൽ റീമിക്സ് ചെയ്ത ട്രാക്കുകളൊന്നും നിങ്ങൾക്ക് ആവശ്യമില്ല. രണ്ട് grep പൈപ്പുകൾ ഉപയോഗിച്ച് ഒരു ഫൈൻഡ് കമാൻഡ് ഉപയോഗിക്കുന്നത് ട്രിക്ക് ചെയ്യും:

# find . –name “*.mp3” | grep –i JayZ | grep –vi “remix”

ഈ ഉദാഹരണത്തിൽ, ഞങ്ങൾ ഒരു *.mp3 എക്സ്റ്റൻഷൻ ഉപയോഗിച്ച് എല്ലാ ഫയലുകളും പ്രിന്റ് ചെയ്യാൻ ഫൈൻഡ് ഉപയോഗിക്കുന്നു, അത് ഫിൽട്ടർ ചെയ്യുന്നതിനായി grep –i ലേക്ക് പൈപ്പ് ചെയ്യുന്നു, കൂടാതെ എല്ലാ ഫയലുകളും \JayZ എന്ന പേരിലും തുടർന്ന് മറ്റൊരു പൈപ്പ് grep -vi എന്നതിലും പ്രിന്റ് ചെയ്യുന്നു. ഫിൽട്ടർ ചെയ്യുന്നു കൂടാതെ എല്ലാ ഫയൽനാമങ്ങളും സ്ട്രിംഗ് ഉപയോഗിച്ച് പ്രിന്റ് ചെയ്യുന്നില്ല (ഏത് സാഹചര്യത്തിലും) \റീമിക്സ്.

4. തിരയൽ സ്ട്രിംഗിന് മുമ്പോ ശേഷമോ വരികളുടെ എണ്ണം പ്രദർശിപ്പിക്കുക

സെർച്ച് സ്uട്രിങ്ങിന് മുമ്പോ ശേഷമോ വരുന്ന പൊരുത്തമുള്ള വരിയും വരികളുടെ എണ്ണവും പ്രദർശിപ്പിക്കുന്ന –A, –B സ്വിച്ചുകളാണ് മറ്റൊരു രണ്ട് ഓപ്ഷനുകൾ. മാൻ പേജ് കൂടുതൽ വിശദമായ വിശദീകരണം നൽകുമ്പോൾ, ഓപ്uഷനുകൾ ഓർമ്മിക്കുന്നത് ഏറ്റവും എളുപ്പമാണെന്ന് ഞാൻ കരുതുന്നു –A = after, and –B = before:

# ifconfig | grep –A 4 eth0
# ifconfig | grep  -B 2 UP

5. പൊരുത്തത്തിന് ചുറ്റുമുള്ള വരികളുടെ എണ്ണം പ്രിന്റ് ചെയ്യുന്നു

grep-ന്റെ -C ഓപ്ഷൻ സമാനമാണ്, എന്നാൽ സ്ട്രിംഗിന് മുമ്പോ ശേഷമോ വരുന്ന വരികൾ പ്രിന്റ് ചെയ്യുന്നതിനുപകരം, അത് രണ്ട് ദിശകളിലേക്കും വരികൾ പ്രിന്റ് ചെയ്യുന്നു:

# ifconfig | grep –C 2 lo

6. പൊരുത്തങ്ങളുടെ എണ്ണം എണ്ണുക

വേഡ് കൗണ്ട് (wc പ്രോഗ്രാം) ഒരു grep സ്ട്രിംഗ് പൈപ്പ് ചെയ്യുന്നത് പോലെ grep-ന്റെ ബിൽറ്റ്-ഇൻ ഓപ്ഷനും നിങ്ങൾക്കായി ഇത് ചെയ്യാൻ കഴിയും:

# ifconfig | grep –c inet6

7. നൽകിയിരിക്കുന്ന സ്ട്രിംഗ് പ്രകാരം ഫയലുകൾ തിരയുക

കംപൈൽ പിശകുകളുടെ സമയത്ത് ഫയലുകൾ ഡീബഗ്ഗ് ചെയ്യുമ്പോൾ grep-നുള്ള –n ഓപ്ഷൻ വളരെ ഉപയോഗപ്രദമാണ്. നൽകിയിരിക്കുന്ന തിരയൽ സ്ട്രിംഗിന്റെ ഫയലിൽ ഇത് ലൈൻ നമ്പർ പ്രദർശിപ്പിക്കുന്നു:

# grep –n “main” setup..py

8. എല്ലാ ഡയറക്uടറികളിലും ഒരു സ്ട്രിംഗ് ആവർത്തിച്ച് തിരയുക

നിലവിലെ ഡയറക്uടറിയിൽ എല്ലാ ഉപഡയറക്uടറികൾക്കൊപ്പം ഒരു സ്uട്രിങ്ങിനായി തിരയാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, ആവർത്തിച്ച് തിരയാനുള്ള –r ഓപ്ഷൻ നിങ്ങൾക്ക് വ്യക്തമാക്കാം:

# grep –r “function” *

9. മുഴുവൻ പാറ്റേണിനുമായി തിരയുന്നു

ഗ്രെപ്പിലേക്ക് -w ഓപ്uഷൻ നൽകിയാൽ സ്ട്രിംഗിലുള്ള മുഴുവൻ പാറ്റേണും തിരയുന്നു. ഉദാഹരണത്തിന്, ഉപയോഗിക്കുന്നത്:

# ifconfig | grep –w “RUNNING”

ഉദ്ധരണികളിൽ പാറ്റേൺ അടങ്ങിയ ലൈൻ പ്രിന്റ് ഔട്ട് ചെയ്യും. മറുവശത്ത്, നിങ്ങൾ ശ്രമിക്കുകയാണെങ്കിൽ:

# ifconfig | grep –w “RUN”

ഞങ്ങൾ ഒരു പാറ്റേൺ തിരയുന്നതിനാൽ ഒന്നും തിരികെ ലഭിക്കില്ല, മറിച്ച് ഒരു മുഴുവൻ വാക്കും.

10. Gzipped ഫയലുകളിൽ ഒരു സ്ട്രിംഗ് തിരയുക

ഗ്രെപ്പിന്റെ ഡെറിവേറ്റീവുകളാണ് ചില പരാമർശങ്ങൾ അർഹിക്കുന്നത്. ആദ്യത്തേത് zgrep ആണ്, ഇത് zcat-ന് സമാനമായി, gzipped ഫയലുകളിൽ ഉപയോഗിക്കാനുള്ളതാണ്. ഇത് grep-ന്റെ അതേ ഓപ്ഷനുകൾ എടുക്കുകയും അതേ രീതിയിൽ ഉപയോഗിക്കുകയും ചെയ്യുന്നു:

# zgrep –i error /var/log/syslog.2.gz

11. ഫയലുകളിൽ റെഗുലർ എക്സ്പ്രഷൻ പൊരുത്തപ്പെടുത്തുക

egrep എന്നത് \എക്സ്റ്റെൻഡഡ് ഗ്ലോബൽ റെഗുലർ എക്സ്പ്രഷൻ എന്നതിനെ സൂചിപ്പിക്കുന്ന മറ്റൊരു ഡെറിവേറ്റീവാണ്. ഇത് +

ആവശ്യമുണ്ടെങ്കിൽ സോഴ്uസ് ഫയലുകളും മറ്റ് കോഡുകളും തിരയുന്നതിന് egrep വളരെ ഉപയോഗപ്രദമാണ്. -E ഓപ്uഷൻ വ്യക്തമാക്കുന്നതിലൂടെ ഇത് സാധാരണ grep-ൽ നിന്ന് അഭ്യർത്ഥിക്കാം.

# grep –E

12. ഒരു നിശ്ചിത പാറ്റേൺ സ്ട്രിംഗ് തിരയുക

fgrep ഒരു നിശ്ചിത പാറ്റേൺ സ്ട്രിംഗിനായി ഒരു ഫയലോ ഫയലുകളുടെ പട്ടികയോ തിരയുന്നു. ഇത് grep-F പോലെയാണ്. fgrep ഉപയോഗിക്കുന്നതിനുള്ള ഒരു സാധാരണ മാർഗ്ഗം അതിലേക്ക് പാറ്റേണുകളുടെ ഒരു ഫയൽ കൈമാറുക എന്നതാണ്:

# fgrep –f file_full_of_patterns.txt file_to_search.txt

ഇത് grep-ന്റെ ഒരു ആരംഭ പോയിന്റ് മാത്രമാണ്, എന്നാൽ നിങ്ങൾക്ക് കാണാൻ കഴിയുന്നത് പോലെ, വിവിധ ആവശ്യങ്ങൾക്ക് ഇത് വിലമതിക്കാനാവാത്തതാണ്. ഞങ്ങൾ നടപ്പിലാക്കിയ ലളിതമായ വൺ ലൈൻ കമാൻഡുകൾ മാറ്റിനിർത്തിയാൽ, തുടക്കത്തിനായി ശക്തമായ ക്രോൺ ജോലികളും ശക്തമായ ഷെൽ സ്ക്രിപ്റ്റുകളും എഴുതാൻ grep ഉപയോഗിക്കാം.

സർഗ്ഗാത്മകത പുലർത്തുക, മാൻ പേജിലെ ഓപ്uഷനുകൾ ഉപയോഗിച്ച് പരീക്ഷിക്കുക, നിങ്ങളുടെ സ്വന്തം ഉദ്ദേശ്യങ്ങൾ നിറവേറ്റുന്ന grep എക്uസ്uപ്രഷനുകൾ കൊണ്ടുവരിക!