Bii o ṣe le Lo Awk lati Ṣatunkọ Ọrọ tabi Awọn gbolohun ọrọ Lilo Awọn iṣe pataki


Ni apakan kẹta ti Awk aṣẹ, a yoo wo wo sisẹ ọrọ tabi awọn gbolohun ọrọ ti o da lori awọn ilana pato ti olumulo kan le ṣalaye.

Nigbakuran, nigba sisẹ ọrọ, o fẹ tọka awọn ila kan lati faili ifawọle tabi awọn ila ti awọn okun ti o da lori ipo ti a fifun tabi lilo apẹẹrẹ kan pato ti o le baamu. Ṣiṣe eyi pẹlu Awk rọrun pupọ, o jẹ ọkan ninu awọn ẹya nla ti Awk ti iwọ yoo rii iranlọwọ.

Jẹ ki a wo apẹẹrẹ kan ni isalẹ, sọ pe o ni atokọ rira fun awọn ohun ounjẹ ti o fẹ ra, ti a pe ni akojọ awọn ounjẹ-iye. O ni atokọ atẹle ti awọn ohun ounjẹ ati awọn idiyele wọn.

$ cat food_prices.list 
No	Item_Name		Quantity	Price
1	Mangoes			   10		$2.45
2	Apples			   20		$1.50
3	Bananas			   5		$0.90
4	Pineapples		   10		$3.46
5	Oranges			   10		$0.78
6	Tomatoes		   5		$0.55
7	Onions			   5            $0.45

Ati lẹhinna, o fẹ tọka ami kan (*) lori awọn ohun ounjẹ ti idiyele wọn tobi ju $2 lọ, eyi le ṣee ṣe nipa ṣiṣe pipaṣẹ wọnyi:

$ awk '/ *$[2-9]\.[0-9][0-9] */ { print $1, $2, $3, $4, "*" ; } / *$[0-1]\.[0-9][0-9] */ { print ; }' food_prices.list

Lati iṣẹjade ti o wa loke, o le rii pe ami wa ni (*) ni ipari awọn ila ti o ni awọn ohun ounjẹ, mango ati ope. Ti o ba ṣayẹwo awọn idiyele wọn, wọn wa loke $2.

Ninu apẹẹrẹ yii, a ti lo awọn ilana meji:

  1. ekini: /*\$[2-9] \. [0-9] [0-9] */ n gba awọn ila ti o ni idiyele ohun ti ounjẹ tobi ju $2 ati
  2. ẹẹkeji: /*\ $=0-1]\.00-9] [0-9] */ wa fun awọn ila pẹlu idiyele ohun ti ounjẹ ti o kere ju $2.

Eyi ni ohun ti o ṣẹlẹ, awọn aaye mẹrin wa ninu faili naa, nigbati apẹẹrẹ ọkan ba pade laini pẹlu idiyele ohun ounjẹ ti o tobi ju $2, o tẹ gbogbo awọn aaye mẹrin mẹrin ati ami (*) ni ipari laini bi asia.

Apẹẹrẹ keji n tẹ awọn ila miiran pẹlu owo ounje ti o kere ju $2 lọ bi wọn ṣe han ninu faili iforukọsilẹ, akojọ awọn ounjẹ_ ọja.

Ni ọna yii o le lo awọn iṣe pato apẹẹrẹ lati ṣe iyọkuro awọn nkan ounjẹ ti o ni idiyele loke $2, botilẹjẹpe iṣoro wa pẹlu iṣelọpọ, awọn ila ti o ni ami (*) ko ṣe kika bi iyoku ti awọn ila ṣiṣe ṣiṣejade ko ṣalaye to.

A rii iṣoro kanna ni Apakan 2 ti jara awk, ṣugbọn a le yanju rẹ ni awọn ọna meji:

1. Lilo pipaṣẹ titẹjade eyiti o jẹ ọna gigun ati alaidun nipa lilo aṣẹ ni isalẹ:

$ awk '/ *$[2-9]\.[0-9][0-9] */ { printf "%-10s %-10s %-10s %-10s\n", $1, $2, $3, $4 "*" ; } / *$[0-1]\.[0-9][0-9] */ { printf "%-10s %-10s %-10s %-10s\n", $1, $2, $3, $4; }' food_prices.list 

2. Lilo aaye $0. Awk nlo oniyipada 0 lati tọju gbogbo laini titẹ sii. Eyi jẹ ọwọ fun ipinnu iṣoro naa loke ati pe o rọrun ati yara bi atẹle:

$ awk '/ *$[2-9]\.[0-9][0-9] */ { print $0 "*" ; } / *$[0-1]\.[0-9][0-9] */ { print ; }' food_prices.list 

Ipari

Iyẹn ni fun bayi ati awọn wọnyi ni awọn ọna ti o rọrun fun sisẹ ọrọ nipa lilo apẹẹrẹ pato iṣe ti o le ṣe iranlọwọ ni sisọ awọn ila ti ọrọ tabi awọn gbolohun ọrọ ni faili kan nipa lilo pipaṣẹ Awk.

Ṣe ireti pe iwọ yoo rii nkan yii ti o wulo ki o ranti lati ka abala atẹle ti jara eyiti yoo dojukọ lori lilo awọn oniṣẹ iṣapẹẹrẹ nipa lilo irinṣẹ awk.