Jak używać polecenia „Next” z AWK w Linux - część 6
- 3589
- 243
- Tacjana Karpiński
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ściBrak 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:
- 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
- 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.
- « Jak dodać ochronę antywirusową i spamową do serwera poczty postfix z CLAMAV i spamassassin - Część 3
- Jak konfigurować serwer poczty postfix i dovecot z bazą danych (MariaDB) Bezpiecznie - Część 1 »