Kā izmantot salīdzināšanas operatorus ar Awk Linux - 4. daļa


Nodarbojoties ar skaitliskām vai virkņu vērtībām teksta rindiņā, Awk komandu lietotājiem teksta vai virkņu filtrēšana, izmantojot salīdzināšanas operatorus, ir noderīga.

Šajā Awk sērijas daļā mēs apskatīsim, kā jūs varat filtrēt tekstu vai virknes, izmantojot salīdzināšanas operatorus. Ja esat programmētājs, jums jau jāpārzina salīdzināšanas operatori, bet tie, kas nav, ļaujiet man paskaidrot zemāk esošajā sadaļā.

Salīdzināšanas operatori Awk tiek izmantoti, lai salīdzinātu skaitļu vai virkņu vērtību, un tie ietver:

  1. > - lielāks par
  2. < - mazāk nekā
  3. > = - lielāks vai vienāds ar
  4. <= - mazāks vai vienāds ar
  5. == - vienāds ar
  6. ! = - nav vienāds ar
  7. some_value ~/pattern/ - taisnība, ja some_value atbilst paraugam
  8. some_value! ~/pattern/ - taisnība, ja some_value neatbilst modelim

Tagad, kad esam apskatījuši dažādus Awk salīdzināšanas operatorus, ļaujiet mums tos labāk izprast, izmantojot piemēru.

Šajā piemērā mums ir fails ar nosaukumu food_list.txt, kas ir dažādu pārtikas preču iepirkumu saraksts, un es vēlētos atzīmēt pārtikas produktus, kuru daudzums ir mazāks vai vienāds ar 20, pievienojot (**) katras rindas beigās.

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

Vispārīgā sintakse salīdzināšanas operatoru izmantošanai Awk ir šāda:

# expression { actions; }

Lai sasniegtu iepriekš minēto mērķi, man būs jāizpilda tālāk norādītā komanda:

# 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	**

Iepriekš minētajā piemērā notiek divas svarīgas lietas:

  1. Pirmais izteiciens {action; } kombinācija, $3 <= 30 {printf “% s% s ”, 0 USD,” ** ”; } izdrukā līnijas, kuru daudzums ir mazāks vai vienāds ar 30, un katras rindas beigās pievieno (**). Daudzuma vērtībai var piekļūt, izmantojot lauka mainīgo $3.
  2. otrais izteiciens {action; } kombinācija, $3> 30 {print $0;} izdrukā līnijas nemainītas, jo to daudzums ir lielāks par 30.

Vēl viens piemērs:

# 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

Šajā piemērā mēs vēlamies norādīt rindas ar daudzumu, kas mazāks vai vienāds ar 20, ar vārdu (TRUE) beigās.

Kopsavilkums

Šī ir iepazīšanās apmācība salīdzināšanas operatoriem Awk, tādēļ jums ir jāizmēģina daudzas citas iespējas un jāatklāj vairāk.

Ja rodas kādas problēmas vai kādi papildinājumi ir padomā, nometiet komentāru zemāk esošajā komentāru sadaļā. Atcerieties izlasīt nākamo Awk sērijas daļu, kurā es jūs iepazīstināšu ar saliktiem izteicieniem.