![Sette opp en 'PXE Network Boot Server' for flere Linux -distribusjonsinstallasjoner i RHEL/CentOS 7](/f/1ef189d5a496111d45acede63d30a00c.jpg?width=100&height=100)
I denne sjette delen av Awk -serien, skal vi se på å bruke neste
kommando, som forteller Awk å hoppe over alle gjenværende mønstre og uttrykk du har gitt, men i stedet lese den neste inndatalinjen.
De neste
kommando hjelper deg med å forhindre utførelse av det jeg vil referere til som tidssvinnende trinn i en kommandoutførelse.
For å forstå hvordan det fungerer, la oss vurdere en fil som heter food_list.txt som ser slik ut:
Matlisteelementer
Ingen Artikkelnavn Pris Antall. 1 Mango $ 3,45 5. 2 epler $ 2,45 25. 3 ananas $ 4,45 55. 4 tomater $ 3,45 25. 5 løk $ 1,45 15. 6 bananer $ 3,45 30.
Vurder å kjøre følgende kommando som vil merke matvarer hvis mengde er mindre enn eller lik 20 med en (*)
tegn på slutten av hver linje:
# awk '$ 4 <= 20 {printf "%s \ t%s \ n", $ 0, "*"; } $ 4> 20 {print $ 0;} 'food_list.txt Ingen Artikkelnavn Pris Antall. 1 Mango $ 3,45 5* 2 epler $ 2,45 25. 3 ananas $ 4,45 55. 4 tomater $ 3,45 25 5 løk $ 1,45 15* 6 bananer $ 3,45 30.
Kommandoen ovenfor fungerer faktisk som følger:
(*)
tegn på slutten ved å bruke uttrykk ett: $4 <= 20
$4 > 20
Men det er ett problem her, når første uttrykk blir utført, skrives en linje som vi vil flagge ut med: {printf "%s \ t%s \ n", $ 0, "**"; }
og deretter i samme trinn, andre uttrykk blir også sjekket som blir en tidssvinnende faktor.
Så det er ikke nødvendig å utføre det andre uttrykket, $4 > 20
igjen etter å ha skrevet ut allerede flaggede linjer som er skrevet ut med det første uttrykket.
For å håndtere dette problemet må du bruke neste
kommandoen som følger:
# awk '$ 4 <= 20 {printf "%s \ t%s \ n", $ 0, "*"; neste; } $ 4> 20 {print $ 0;} 'food_list.txt Ingen Artikkelnavn Pris Antall. 1 Mango $ 3,45 5* 2 epler $ 2,45 25. 3 ananas $ 4,45 55. 4 tomater $ 3,45 25 5 løk $ 1,45 15* 6 bananer $ 3,45 30.
Etter at en enkelt inndatalinje er skrevet ut med $4 <= 20
{printf "%s \ t%s \ n", $ 0, "*"; neste; }
, neste
kommandoen inkludert vil hjelpe til med å hoppe over det andre uttrykket $4 > 20
{print $ 0;}
, så utførelsen går til neste inngangslinje uten å kaste bort tid på å kontrollere om mengden er større enn 20.
De neste kommando er veldig viktig er å skrive effektive kommandoer, og der det er nødvendig, kan du alltid bruke til å fremskynde utførelsen av et skript. Forbered deg på neste del av serien der vi skal se på ved hjelp av standardinngang (STDIN) som input for Awk.
Håper du synes denne veiledningen er nyttig, og du kan som alltid skrive tankene dine skriftlig ved å legge igjen en kommentar i kommentarfeltet nedenfor.