Linux-ൽ Awk-മായി താരതമ്യ ഓപ്പറേറ്റർമാരെ എങ്ങനെ ഉപയോഗിക്കാം - ഭാഗം 4


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

Awk സീരീസിന്റെ ഈ ഭാഗത്ത്, താരതമ്യ ഓപ്പറേറ്ററുകൾ ഉപയോഗിച്ച് നിങ്ങൾക്ക് എങ്ങനെ ടെക്uസ്uറ്റോ സ്uട്രിംഗുകളോ ഫിൽട്ടർ ചെയ്യാം എന്ന് ഞങ്ങൾ പരിശോധിക്കും. നിങ്ങൾ ഒരു പ്രോഗ്രാമറാണെങ്കിൽ, നിങ്ങൾക്ക് താരതമ്യ ഓപ്പറേറ്റർമാരുമായി പരിചയമുണ്ടായിരിക്കണം, എന്നാൽ അല്ലാത്തവരെ, ചുവടെയുള്ള വിഭാഗത്തിൽ ഞാൻ വിശദീകരിക്കാം.

അക്കങ്ങളുടെയോ സ്ട്രിംഗുകളുടെയോ മൂല്യം താരതമ്യം ചെയ്യാൻ Awk-ലെ താരതമ്യ ഓപ്പറേറ്റർമാർ ഉപയോഗിക്കുന്നു, അവയിൽ ഇനിപ്പറയുന്നവ ഉൾപ്പെടുന്നു:

  1. >
  2. എന്നതിനേക്കാൾ വലുത്
  3. എന്നതിനേക്കാൾ കുറവ്
  4. >=
  5. എന്നതിനേക്കാൾ വലുതോ തുല്യമോ
  6. =
  7. എന്നതിനേക്കാൾ കുറവ് അല്ലെങ്കിൽ തുല്യം
  8. == – തുല്യം
  9. != – തുല്യമല്ല
  10. some_value ~/pattern/ – some_value പാറ്റേണുമായി പൊരുത്തപ്പെടുന്നുവെങ്കിൽ ശരിയാണ്
  11. some_value !~/pattern/ – ചില_മൂല്യം പാറ്റേണുമായി പൊരുത്തപ്പെടുന്നില്ലെങ്കിൽ ശരി

ഇപ്പോൾ ഞങ്ങൾ Awk-ലെ വിവിധ താരതമ്യ ഓപ്പറേറ്റർമാരെ പരിശോധിച്ചു, ഒരു ഉദാഹരണം ഉപയോഗിച്ച് നമുക്ക് അവരെ നന്നായി മനസ്സിലാക്കാം.

ഈ ഉദാഹരണത്തിൽ, ഞങ്ങൾക്ക് food_list.txt എന്ന് പേരുള്ള ഒരു ഫയൽ ഉണ്ട്, അത് വ്യത്യസ്uത ഭക്ഷണ സാധനങ്ങൾക്കായുള്ള ഷോപ്പിംഗ് ലിസ്uറ്റാണ്, (**) ചേർത്ത് അളവ് 20-ൽ താഴെയോ അതിന് തുല്യമോ ആയ ഭക്ഷണ സാധനങ്ങൾ ഫ്ലാഗ് ചെയ്യാൻ ഞാൻ ആഗ്രഹിക്കുന്നു. ഓരോ വരിയുടെയും അവസാനം.

No      Item_Name               Quantity        Price
1       Mangoes                    45           $3.45
2       Apples                     25           $2.45
3       Pineapples                 5            $4.45
4       Tomatoes                   25           $3.45
5       Onions                     15           $1.45
6       Bananas                    30           $3.45

Awk-ൽ താരതമ്യ ഓപ്പറേറ്ററുകൾ ഉപയോഗിക്കുന്നതിനുള്ള പൊതുവായ വാക്യഘടന ഇതാണ്:

# expression { actions; }

മുകളിലുള്ള ലക്ഷ്യം നേടുന്നതിന്, ഞാൻ താഴെയുള്ള കമാൻഡ് പ്രവർത്തിപ്പിക്കേണ്ടതുണ്ട്:

# awk '$3 <= 30 { printf "%s\t%s\n", $0,"**" ; } $3 > 30 { print $0 ;}' food_list.txt

No	Item_Name`		Quantity	Price
1	Mangoes	      		   45		$3.45
2	Apples			   25		$2.45	**
3	Pineapples		   5		$4.45	**
4	Tomatoes		   25		$3.45	**
5	Onions			   15           $1.45	**
6	Bananas			   30           $3.45	**

മുകളിലുള്ള ഉദാഹരണത്തിൽ, രണ്ട് പ്രധാന കാര്യങ്ങൾ സംഭവിക്കുന്നു:

  1. ആദ്യ പ്രയോഗം {പ്രവർത്തനം ; } കോമ്പിനേഷൻ, $3 <= 30 {printf “%s %s ”, $0,”**” ; } 30-നേക്കാൾ കുറവോ തുല്യമോ ഉള്ള വരികൾ പ്രിന്റ് ചെയ്യുകയും ഓരോ വരിയുടെയും അവസാനം ഒരു (**) ചേർക്കുകയും ചെയ്യുന്നു. $3 ഫീൽഡ് വേരിയബിൾ ഉപയോഗിച്ചാണ് അളവിന്റെ മൂല്യം ആക്സസ് ചെയ്യുന്നത്.
  2. രണ്ടാമത്തെ എക്സ്പ്രഷൻ {പ്രവർത്തനം ; } കോമ്പിനേഷൻ, $3 > 30 {print $0 ;} വരികൾ മാറ്റമില്ലാതെ പ്രിന്റ് ചെയ്യുന്നു, കാരണം അവയുടെ അളവ് 30-നേക്കാൾ കൂടുതലാണ്.

ഒരു ഉദാഹരണം കൂടി:

# awk '$3 <= 20 { printf "%s\t%s\n", $0,"TRUE" ; } $3 > 20  { print $0 ;} ' food_list.txt 

No	Item_Name		Quantity	Price
1	Mangoes			   45		$3.45
2	Apples			   25		$2.45
3	Pineapples		   5		$4.45	TRUE
4	Tomatoes		   25		$3.45
5	Onions			   15           $1.45	TRUE
6       Bananas	                   30           $3.45

ഈ ഉദാഹരണത്തിൽ, 20 ന് തുല്യമോ കുറവോ ഉള്ള വരികൾ അവസാനം വാക്ക് (TRUE) ഉപയോഗിച്ച് സൂചിപ്പിക്കാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നു.

സംഗ്രഹം

ഇത് Awk-ലെ താരതമ്യ ഓപ്പറേറ്റർമാർക്കുള്ള ഒരു ആമുഖ ട്യൂട്ടോറിയലാണ്, അതിനാൽ നിങ്ങൾ മറ്റ് നിരവധി ഓപ്ഷനുകൾ പരീക്ഷിച്ച് കൂടുതൽ കണ്ടെത്തേണ്ടതുണ്ട്.

നിങ്ങൾ അഭിമുഖീകരിക്കുന്ന എന്തെങ്കിലും പ്രശ്uനങ്ങളോ നിങ്ങളുടെ മനസ്സിലുള്ള ഏതെങ്കിലും കൂട്ടിച്ചേർക്കലുകളോ ഉണ്ടെങ്കിൽ, ചുവടെയുള്ള അഭിപ്രായ വിഭാഗത്തിൽ ഒരു അഭിപ്രായം ഇടുക. കോമ്പൗണ്ട് എക്സ്പ്രഷനുകളിലൂടെ ഞാൻ നിങ്ങളെ കൊണ്ടുപോകുന്ന Awk പരമ്പരയുടെ അടുത്ത ഭാഗം വായിക്കാൻ ഓർക്കുക.