Kif tuża l-kmand li jmiss b'Awk fil-Linux - Parti 6
F'din is-sitt parti tas-serje Awk, se nħarsu lejn l-użu tal-kmand next
, li jgħid lil Awk biex taqbeż il-mudelli u l-espressjonijiet kollha li jkun ipprovdejt, iżda minflok aqra l-linja tad-dħul li jmiss.
Il-kmand li jmiss
jgħinek tipprevjeni li tesegwixxi dak li jien nirreferi għalih bħala passi li jaħlu l-ħin fl-eżekuzzjoni tal-kmand.
Biex tifhem kif taħdem, ejja nikkunsidraw fajl imsejjaħ food_list.txt li jidher bħal dan:
No Item_Name Price Quantity 1 Mangoes $3.45 5 2 Apples $2.45 25 3 Pineapples $4.45 55 4 Tomatoes $3.45 25 5 Onions $1.45 15 6 Bananas $3.45 30
Ikkunsidra li tħaddem il-kmand li ġej li se jimmarka oġġetti tal-ikel li l-kwantità tagħhom hija inqas minn jew ugwali għal 20 b'sinjal (*)
fl-aħħar ta' kull linja:
# awk '$4 <= 20 { printf "%s\t%s\n", $0,"*" ; } $4 > 20 { print $0 ;} ' food_list.txt No Item_Name Price Quantity 1 Mangoes $3.45 5 * 2 Apples $2.45 25 3 Pineapples $4.45 55 4 Tomatoes $3.45 25 5 Onions $1.45 15 * 6 Bananas $3.45 30
Il-kmand ta 'hawn fuq fil-fatt jaħdem kif ġej:
- L-ewwel, jiċċekkja jekk il-kwantità, ir-raba' qasam ta' kull linja ta' input huwiex inqas minn jew ugwali għal 20, jekk valur jissodisfa dik il-kundizzjoni, jiġi stampat u mmarkat bis-sinjal
(*)
fl-aħħar billi tuża l-espressjoni waħda:$4 <= 20
- It-tieni, jiċċekkja jekk ir-raba' qasam ta' kull linja ta' input huwiex akbar minn 20, u jekk linja tissodisfax il-kundizzjoni tiġi stampata bl-użu ta' l-espressjoni tnejn:
$4 > 20
Iżda hawn problema waħda, meta l-ewwel espressjoni tiġi eżegwita, linja li rridu nimmarkaw tiġi stampata bl-użu: { printf \%s %s \, $0,\**\ ; }
u mbagħad fl-istess pass, tiġi kkontrollata wkoll it-tieni espressjoni li ssir fattur ta' ħela ta' ħin.
Allura m'hemmx bżonn li tesegwixxi t-tieni espressjoni, $4 > 20
għal darb'oħra wara l-istampar ta 'linji diġà mmarkati li ġew stampati bl-użu tal-ewwel espressjoni.
Biex tittratta din il-problema, trid tuża l-kmand li jmiss
kif ġej:
# awk '$4 <= 20 { printf "%s\t%s\n", $0,"*" ; next; } $4 > 20 { print $0 ;} ' food_list.txt No Item_Name Price Quantity 1 Mangoes $3.45 5 * 2 Apples $2.45 25 3 Pineapples $4.45 55 4 Tomatoes $3.45 25 5 Onions $1.45 15 * 6 Bananas $3.45 30
Wara li linja ta' input waħda tiġi stampata bl-użu ta' $4 <= 20
{ printf \%s %s \, $0,\*\ ; li jmiss ; }
, il-kmand li jmiss
inkluż se jgħin biex taqbeż it-tieni espressjoni $4 > 20
{ print $0 ;}
, għalhekk l-eżekuzzjoni tmur għall-linja tad-dħul li jmiss mingħajr ma jkollok għalfejn taħli ħin biex tiċċekkja jekk il-kwantità hijiex akbar minn 20.
Il-kmand li jmiss huwa importanti ħafna huwa l-kitba ta 'kmandi effiċjenti u fejn meħtieġ, dejjem tista' tuża biex tħaffef l-eżekuzzjoni ta 'skript. Ipprepara għall-parti li jmiss tas-serje fejn se nħarsu lejn l-użu ta' input standard (STDIN) bħala input għal Awk.
Nittama li ssib dan il-gwida ta' għajnuna u tista' bħal dejjem tpoġġi l-ħsibijiet tiegħek bil-miktub billi tħalli kumment fit-taqsima tal-kummenti hawn taħt.