Giunsa Paggamit ang Compound Expressions sa Awk sa Linux - Bahin 5


Kaniadto, nagtan-aw kami sa yano nga mga ekspresyon kung gisusi kung ang usa ka kondisyon natuman o wala. Unsa kaha kung gusto nimo mogamit labi pa sa usa ka ekspresyon aron masusi ang usa ka partikular nga kondisyon?

Niini nga artikulo, atong tan-awon kung giunsa nimo paghiusa ang daghang mga ekspresyon nga gitawag nga compound nga mga ekspresyon aron masusi ang usa ka kondisyon kung nagsala sa teksto o mga kuwerdas.

Sa Awk, ang compound nga mga ekspresyon gihimo gamit ang && nga gitawag og (ug) ug ang || nga gitawag og (o) compound operators.

Ang kinatibuk-ang syntax alang sa compound nga mga ekspresyon mao ang:

( first_expression ) && ( second_expression )

Dinhi, kinahanglan nga tinuod ang first_expression ug second_expression aron mahimong tinuod ang tibuok ekspresyon.

( first_expression ) || ( second_expression) 

Dinhi, kinahanglan nga tinuod ang usa sa mga ekspresyon nga first_expression o second_expression para tinuod ang tibuok ekspresyon.

Pasidaan: Hinumdumi nga iapil kanunay ang parentesis.

Ang mga ekspresyon mahimong matukod gamit ang mga operator sa pagtandi nga among gitan-aw sa Bahin 4 sa serye sa awk.

Atong makuha karon ang usa ka tin-aw nga pagsabut gamit ang usa ka pananglitan sa ubos:

Niini nga pananglitan, adunay usa ka text file nga ginganlan og tecmint_deals.txt, nga adunay usa ka lista sa pipila ka talagsaon nga random deal sa Tecmint, kini naglakip sa ngalan sa deal, ang presyo ug tipo.

No      Name                                    Price           Type
1       Mac_OS_X_Cleanup_Suite                  $9.99           Software
2       Basics_Notebook                         $14.99          Lifestyle
3       Tactical_Pen                            $25.99          Lifestyle
4       Scapple                                 $19.00          Unknown
5       Nano_Tool_Pack                          $11.99          Unknown
6       Ditto_Bluetooth_Altering_Device         $33.00          Tech
7       Nano_Prowler_Mini_Drone                 $36.99          Tech 

Ingna nga gusto lang namo nga print ug flag deals nga labaw sa $20 ug type nga \Tech gamit ang (**) sign sa katapusan sa matag linya.

Kinahanglan namon nga ipadagan ang mando sa ubos.

# awk '($3 ~ /^$[2-9][0-9]*\.[0-9][0-9]$/) && ($4=="Tech") { printf "%s\t%s\n",$0,"*"; } ' tecmint_deals.txt 

6	Ditto_Bluetooth_Altering_Device		$33.00		Tech	*
7	Nano_Prowler_Mini_Drone			$36.99          Tech	 *

Sa kini nga pananglitan, gigamit namon ang duha nga mga ekspresyon sa usa ka compound nga ekspresyon:

  1. Unang ekspresyon, ($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/); nagsusi sa para sa mga linya nga adunay mga deal nga adunay presyo nga labaw sa $20, ug kini tinuod lamang kung ang kantidad nga $3 nga mao ang presyo motakdo sa pattern /^\$[2-9][0-9]*\.[0-9] [0-9]$/
  2. Ug ang ikaduhang ekspresyon, ($4 == “Tech”); gisusi kung ang deal kay tipo nga \Tech ug kini tinuod lang kung ang kantidad nga $4 katumbas sa \Tech”.

Hinumdumi, ang usa ka linya i-flag lang gamit ang (**), kung ang una nga ekspresyon ug ikaduha nga ekspresyon tinuod sama sa giingon sa prinsipyo sa && operator.

Summary

Ang pipila ka mga kondisyon kanunay nga nanginahanglan sa paghimo og mga compound nga ekspresyon aron ikaw mohaum sa eksakto kung unsa ang imong gusto. Kung masabtan nimo ang paggamit sa mga operator sa pagtandi ug compound expression, ang pagsala sa teksto o mga kuwerdas base sa pipila ka lisud nga mga kahimtang mahimong dali.

Hinaot nga imong makita nga mapuslanon kini nga giya ug alang sa bisan unsang mga pangutana o pagdugang, hinumdomi kanunay nga magbilin usa ka komento ug ang imong kabalaka masulbad sumala niana.