U ovom šestom dijelu Awk serija, pogledat ćemo na korištenje Sljedeći
naredba, koja govori Awk za preskakanje svih preostalih uzoraka i izraza koje ste unijeli, ali umjesto toga pročitajte sljedeći redak za unos.
The Sljedeći
naredba pomaže vam spriječiti izvršavanje onoga što bih ja nazvao koracima koji troše vrijeme u izvođenju naredbe.
Da bismo razumjeli kako to funkcionira, razmotrimo datoteku pod nazivom food_list.txt to izgleda ovako:
Stavke s popisom hrane
Nema Stavka_Naziv Cijena Količina. 1 mango 3,45 USD 5. 2 jabuke 2,45 USD 25. 3 ananasa 4,45 USD 55. 4 rajčice 3,45 USD 25. 5 lukova 1,45 USD 15. 6 banana 3,45 USD 30.
Razmislite o pokretanju sljedeće naredbe koja označava namirnice čija je količina manja ili jednaka 20 s (*)
znak na kraju svakog retka:
# awk '$ 4 <= 20 {printf "%s \ t%s \ n", $ 0, "*"; } 4 USD> 20 {print $ 0;} 'food_list.txt Nema Stavka_Naziv Cijena Količina. 1 mango 3,45 USD 5* 2 jabuke 2,45 USD 25. 3 ananasa 4,45 USD 55. 4 rajčice 3,45 USD 25 5 Luka 1,45 USD 15* 6 banana 3,45 USD 30.
Gornja naredba zapravo funkcionira na sljedeći način:
(*)
potpišite se na kraju izrazom jedan: $4 <= 20
$4 > 20
Ali ovdje postoji jedan problem, kada je prvi izraz se izvršava, redak koji želimo označiti ispisuje se pomoću: {printf "%s \ t%s \ n", $ 0, "**"; }
a zatim u istom koraku, drugi izraz Također se provjerava što postaje faktor gubljenja vremena.
Dakle, nema potrebe za izvršavanjem drugog izraza, $4 > 20
ponovno nakon ispisa već označenih linija koje su ispisane pomoću prvog izraza.
Da biste se riješili ovog problema, morate koristiti Sljedeći
naredite na sljedeći način:
# awk '$ 4 <= 20 {printf "%s \ t%s \ n", $ 0, "*"; Sljedeći; } 4 USD> 20 {print $ 0;} 'food_list.txt Nema Stavka_Naziv Cijena Količina. 1 mango 3,45 USD 5* 2 jabuke 2,45 USD 25. 3 ananasa 4,45 USD 55. 4 rajčice 3,45 USD 25 5 Luka 1,45 USD 15* 6 banana 3,45 USD 30.
Nakon što se jedan redak unosa ispiše pomoću $4 <= 20
{printf "%s \ t%s \ n", $ 0, "*"; Sljedeći; }
, Sljedeći
uključena naredba pomoći će preskočiti drugi izraz $4 > 20
{ispisati 0 USD;}
, pa izvršenje ide na sljedeći ulazni redak bez gubljenja vremena na provjeru je li količina veća od 20.
The Sljedeći Naredba je vrlo važna za pisanje učinkovitih naredbi, a gdje je potrebno, uvijek možete upotrijebiti za ubrzanje izvršavanja skripte. Pripremite se za sljedeći dio serije u kojem ćemo pogledati pomoću standardnog unosa (STDIN) kao ulaz za Awk.
Nadam se da će vam ovo uputstvo biti od pomoći i kao i uvijek možete napisati svoje mišljenje ostavljajući komentar u odjeljku za komentare ispod.