Jak używać polecenia „Next” z AWK w Linux - część 6

Jak używać polecenia „Next” z AWK w Linux - część 6

W tej szóstej części serii AWK przyjrzymy się użyciu Następny polecenie, które mówi Awk Aby pominąć wszystkie pozostałe wzorce i wyrażenia, które dostarczyłeś, ale zamiast tego przeczytaj następną linię wejściową.

Następny Polecenie pomaga zapobiegać wykonywaniu tego, co nazywałbym krokami do chwiejności w wykonaniu polecenia.

Aby zrozumieć, jak to działa, rozważmy plik o nazwie Food_list.tekst To wygląda na to:

Elementy listy żywności
Brak Item_name Cena Ilości 1 Mangoes 3 USD.45 5 2 Jabłka 2 USD.45 25 3 ananasy 4 USD.45 55 4 pomidory 3 USD.45 25 5 cebuli 1 USD.45 15 6 Banany 3 USD.45 30 

Rozważ uruchomienie następującego polecenia, które będzie oznaczać elementy żywnościowe, których ilość jest mniejsza lub równa 20 z (*) podpisz na końcu każdej linii:

# AWK '4 20 wydrukuj 0;' food_list.tekst Brak Item_name Cena Ilości 1 Mangoes 3 USD.45 5 * 2 jabłka 2 USD.45 25 3 ananasy 4 USD.45 55 4 pomidory 3 USD.45 25 5 cebuli 1 USD.45 15 * 6 bananów 3 USD.45 30 

Polecenie powyżej działa w następujący sposób:

  1. Po pierwsze, sprawdza, czy ilość, czwarte pole każdej linii wejściowej jest mniejsze lub równe 20, Jeśli wartość spełnia ten warunek, jest drukowana i oznaczona (*) Podpis na końcu za pomocą wyrażenia pierwszego: 4 USD <= 20
  2. Po drugie, sprawdza, czy czwarte pole każdej linii wejściowej jest większe niż 20, a jeśli linia spełnia warunek, zostanie wydrukowany za pomocą wyrażenia dwa: 4 $> 20

Ale jest tu jeden problem, kiedy Pierwsze wyrażenie jest wykonywany, linia, którą chcemy oznaczyć, jest wydrukowany za pomocą: printf "%s \ t%s \ n", 0, „**”; A potem w tym samym kroku drugie wyrażenie jest również sprawdzany, który staje się czynnikiem marnowania czasu.

Więc nie ma potrzeby wykonywania drugiego wyrażenia, 4 $> 20 Ponownie po wydrukowaniu już oznaczonych linii, które zostały wydrukowane za pomocą pierwszego wyrażenia.

Aby poradzić sobie z tym problemem, musisz użyć Następny polecenie w następujący sposób:

# AWK '4 20 wydrukuj 0;' food_list.tekst Brak Item_name Cena Ilości 1 Mangoes 3 USD.45 5 * 2 jabłka 2 USD.45 25 3 ananasy 4 USD.45 55 4 pomidory 3 USD.45 25 5 cebuli 1 USD.45 15 * 6 bananów 3 USD.45 30 

Po wydrukowaniu pojedynczej linii wejściowej za pomocą 4 USD <= 20 printf "%s \ t%s \ n", 0 $, „*”; Następny ; , Następny Dołączone polecenie pomoże pominąć drugie wyrażenie 4 $> 20 drukuj 0 $;, Tak więc wykonanie przechodzi do następnej linii wejściowej bez konieczności marnowania czasu na sprawdzenie, czy ilość jest większa niż 20.

Następny Polecenie jest bardzo ważne, to pisanie wydajnych poleceń i w razie potrzeby zawsze możesz użyć do przyspieszenia wykonywania skryptu. Przygotuj się na następną część serii, w której przyjrzymy się przy użyciu standardowego wejścia (Stdin) jako dane wejściowe dla Awk.

Mam nadzieję, że znajdziesz to, jak kierować pomocnymi i jak zawsze możesz podać swoje myśli na piśmie, pozostawiając komentarz w sekcji komentarzy poniżej.