ഷെൽ വേരിയബിളുകൾ ഉപയോഗിക്കാൻ Awk-നെ എങ്ങനെ അനുവദിക്കാം - ഭാഗം 11


ഞങ്ങൾ ഷെൽ സ്ക്രിപ്റ്റുകൾ എഴുതുമ്പോൾ, ഞങ്ങൾ സാധാരണയായി മറ്റ് ചെറിയ പ്രോഗ്രാമുകളോ അല്ലെങ്കിൽ Awk ഓപ്പറേഷനുകൾ പോലുള്ള കമാൻഡുകളോ ഞങ്ങളുടെ സ്ക്രിപ്റ്റുകളിൽ ഉൾപ്പെടുത്തുന്നു. Awk-ന്റെ കാര്യത്തിൽ, ഷെല്ലിൽ നിന്ന് Awk പ്രവർത്തനങ്ങളിലേക്ക് ചില മൂല്യങ്ങൾ കൈമാറുന്നതിനുള്ള വഴികൾ ഞങ്ങൾ കണ്ടെത്തേണ്ടതുണ്ട്.

Awk കമാൻഡുകൾക്കുള്ളിൽ ഷെൽ വേരിയബിളുകൾ ഉപയോഗിച്ചുകൊണ്ട് ഇത് ചെയ്യാൻ കഴിയും, കൂടാതെ Awk കമാൻഡുകൾക്ക് കൈമാറാൻ ആഗ്രഹിക്കുന്ന മൂല്യങ്ങൾ ഉൾക്കൊള്ളുന്ന ഷെൽ വേരിയബിളുകൾ ഉപയോഗിക്കാൻ Awk-നെ എങ്ങനെ അനുവദിക്കാമെന്ന് സീരീസിന്റെ ഈ ഭാഗത്ത് നമ്മൾ പഠിക്കും.

ഷെൽ വേരിയബിളുകൾ ഉപയോഗിക്കുന്നതിന് നിങ്ങൾക്ക് Awk പ്രവർത്തനക്ഷമമാക്കാൻ രണ്ട് വഴികളുണ്ട്:

1. ഷെൽ ഉദ്ധരണി ഉപയോഗിക്കുന്നു

ഒരു Awk കമാൻഡിൽ ഷെൽ വേരിയബിളിന്റെ മൂല്യം മാറ്റിസ്ഥാപിക്കുന്നതിന് ഷെൽ ഉദ്ധരണി എങ്ങനെ ഉപയോഗിക്കാം എന്ന് വ്യക്തമാക്കുന്നതിന് നമുക്ക് ഒരു ഉദാഹരണം നോക്കാം. ഈ ഉദാഹരണത്തിൽ, /etc/passwd ഫയലിൽ ഒരു ഉപയോക്തൃനാമം തിരയാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നു, ഉപയോക്താവിന്റെ അക്കൗണ്ട് വിവരങ്ങൾ ഫിൽട്ടർ ചെയ്ത് പ്രിന്റ് ചെയ്യുക.

അതിനാൽ, ഇനിപ്പറയുന്ന ഉള്ളടക്കം ഉപയോഗിച്ച് നമുക്ക് ഒരു test.sh സ്ക്രിപ്റ്റ് എഴുതാം:

#!/bin/bash

#read user input
read -p "Please enter username:" username

#search for username in /etc/passwd file and print details on the screen
cat /etc/passwd | awk "/$username/ "' { print $0 }'

അതിനുശേഷം, ഫയൽ സേവ് ചെയ്ത് പുറത്തുകടക്കുക.

മുകളിലെ test.sh സ്ക്രിപ്റ്റിലെ Awk കമാൻഡിന്റെ വ്യാഖ്യാനം:

cat /etc/passwd | awk "/$username/ "' { print $0 }'

\/$username/ \ – Awk കമാൻഡിൽ ഷെൽ വേരിയബിൾ ഉപയോക്തൃനാമത്തിന്റെ മൂല്യം പകരം വയ്ക്കാൻ ഷെൽ ഉദ്ധരണി ഉപയോഗിക്കുന്നു. /etc/passwd ഫയലിൽ തിരയേണ്ട പാറ്റേണാണ് ഉപയോക്തൃനാമത്തിന്റെ മൂല്യം.

ഇരട്ട ഉദ്ധരണി Awk സ്ക്രിപ്റ്റിന് പുറത്താണെന്ന കാര്യം ശ്രദ്ധിക്കുക, ‘{ print $0 }’.

തുടർന്ന് സ്ക്രിപ്റ്റ് എക്സിക്യൂട്ടബിൾ ആക്കി താഴെ പറയുന്ന രീതിയിൽ പ്രവർത്തിപ്പിക്കുക:

$ chmod  +x  test.sh
$ ./text.sh 

സ്ക്രിപ്റ്റ് പ്രവർത്തിപ്പിച്ചതിന് ശേഷം, ഒരു ഉപയോക്തൃനാമം നൽകാനും സാധുവായ ഉപയോക്തൃനാമം ടൈപ്പ് ചെയ്ത് എന്റർ അമർത്താനും നിങ്ങളോട് ആവശ്യപ്പെടും. ഉപയോക്താവിന്റെ അക്കൗണ്ട് വിശദാംശങ്ങൾ /etc/passwd ഫയലിൽ നിന്ന് നിങ്ങൾ താഴെ കാണും:

2. Awk ന്റെ വേരിയബിൾ അസൈൻമെന്റ് ഉപയോഗിക്കുന്നു

മുകളിലുള്ള രീതിയുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ ഈ രീതി വളരെ ലളിതവും മികച്ചതുമാണ്. മുകളിലുള്ള ഉദാഹരണം പരിഗണിക്കുമ്പോൾ, ജോലി പൂർത്തിയാക്കാൻ നമുക്ക് ഒരു ലളിതമായ കമാൻഡ് പ്രവർത്തിപ്പിക്കാം. ഈ രീതിക്ക് കീഴിൽ, ഒരു Awk വേരിയബിളിലേക്ക് ഷെൽ വേരിയബിൾ നൽകുന്നതിന് ഞങ്ങൾ -v ഓപ്ഷൻ ഉപയോഗിക്കുന്നു.

ആദ്യം, ഒരു ഷെൽ വേരിയബിൾ സൃഷ്uടിക്കുക, ഉപയോക്തൃനാമം അതിന് /etc/passswd ഫയലിൽ തിരയേണ്ട പേര് നൽകുക:

username="aaronkilik"

തുടർന്ന് താഴെയുള്ള കമാൻഡ് ടൈപ്പ് ചെയ്ത് എന്റർ അമർത്തുക:

# cat /etc/passwd | awk -v name="$username" ' $0 ~ name {print $0}'

മുകളിലുള്ള കമാൻഡിന്റെ വിശദീകരണം:

  1. -v – ഒരു വേരിയബിൾ പ്രഖ്യാപിക്കാനുള്ള Awk ഓപ്ഷൻ
  2. ഉപയോക്തൃനാമം – ഷെൽ വേരിയബിൾ ആണ്
  3. name – Awk വേരിയബിൾ ആണ്

Awk സ്ക്രിപ്റ്റിനുള്ളിലെ $0 ~ name, $0 ~ name {print $0} നമുക്ക് സൂക്ഷ്മമായി പരിശോധിക്കാം. ഓർക്കുക, ഈ സീരീസിന്റെ ഭാഗം 4-ൽ ഞങ്ങൾ Awk താരതമ്യ ഓപ്പറേറ്റർമാരെ ഉൾപ്പെടുത്തിയപ്പോൾ, താരതമ്യ ഓപ്പറേറ്ററുകളിൽ ഒന്ന് മൂല്യം ~ പാറ്റേൺ ആയിരുന്നു, അതിനർത്ഥം: മൂല്യം പാറ്റേണുമായി പൊരുത്തപ്പെടുന്നുവെങ്കിൽ ശരിയാണ്.

Awk-ലേക്ക് പൈപ്പ് ചെയ്uത cat കമാൻഡിന്റെ ഔട്ട്uപുട്ട്($0) പാറ്റേണുമായി പൊരുത്തപ്പെടുന്നു (aaronkilik) അത് നമ്മൾ /etc/passwd-ൽ തിരയുന്ന പേരാണ്, അതിന്റെ ഫലമായി, താരതമ്യ പ്രവർത്തനം ശരിയാണ്. ഉപയോക്താവിന്റെ അക്കൗണ്ട് വിവരങ്ങൾ അടങ്ങിയ ലൈൻ സ്ക്രീനിൽ പ്രിന്റ് ചെയ്യപ്പെടും.

ഉപസംഹാരം

Awk കമാൻഡുകൾക്കുള്ളിൽ ഷെൽ വേരിയബിളുകൾ ഉപയോഗിക്കാൻ ഞങ്ങളെ സഹായിക്കുന്ന Awk ഫീച്ചറുകളുടെ ഒരു പ്രധാന വിഭാഗം ഞങ്ങൾ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്. പലപ്പോഴും, നിങ്ങൾ ഷെൽ സ്ക്രിപ്റ്റുകൾക്കുള്ളിൽ ചെറിയ Awk പ്രോഗ്രാമുകളോ കമാൻഡുകളോ എഴുതും, അതിനാൽ, Awk കമാൻഡുകൾക്കുള്ളിൽ ഷെൽ വേരിയബിളുകൾ എങ്ങനെ ഉപയോഗിക്കണമെന്ന് നിങ്ങൾക്ക് വ്യക്തമായ ധാരണ ഉണ്ടായിരിക്കണം.

Awk സീരീസിന്റെ അടുത്ത ഭാഗത്ത്, ഞങ്ങൾ Awk ഫീച്ചറുകളുടെ മറ്റൊരു നിർണായക വിഭാഗത്തിലേക്ക് കടക്കും, അതായത് ഒഴുക്ക് നിയന്ത്രണ പ്രസ്താവനകൾ. അതിനാൽ തുടരുക, നമുക്ക് പഠിക്കുകയും പങ്കിടുകയും ചെയ്യാം.