Co to jest AWK NF?

Co To Jest Awk Nf



Język skryptowy AWK posiada również szereg wbudowanych zmiennych specjalnych służących pewnym wcześniej zdefiniowanym celom. Jedną z takich wbudowanych zmiennych jest „NF”, która ma swoją własną, predefiniowaną funkcjonalność. W tym artykule zbadamy cel tej wbudowanej zmiennej AWK, demonstrując kilka odpowiednich przykładów w Ubuntu 20.04.

AWK NF w Ubuntu 20.04:

Zmienna „NF” AWK służy do drukowania liczby pól we wszystkich wierszach dowolnego dostarczonego pliku. Ta wbudowana zmienna przechodzi przez wszystkie wiersze pliku jeden po drugim i drukuje liczbę pól osobno dla każdego wiersza. Aby dobrze zrozumieć tę funkcjonalność, będziesz musiał przeczytać przykłady omówione poniżej.

Przykłady demonstrujące użycie AWK NF w Ubuntu 20.04:

Poniższe cztery przykłady zostały zaprojektowane w taki sposób, aby nauczyć Cię korzystania z AWK NF w bardzo łatwy do zrozumienia sposób. Wszystkie te przykłady zostały zaimplementowane przy użyciu systemu operacyjnego Ubuntu 20.04.







Przykład nr 1: Wydrukuj liczbę pól z każdego wiersza pliku tekstowego:

W tym przykładzie chcieliśmy wydrukować liczbę pól lub kolumn każdej linii lub wiersza lub rekordu pliku tekstowego w Ubuntu 20.04. Aby pokazać, jak to zrobić, utworzyliśmy plik tekstowy pokazany na poniższym obrazku. Ten plik tekstowy zawiera stawki za kilogram jabłek z pięciu różnych miast Pakistanu.





Po utworzeniu tego przykładowego pliku tekstowego wykonaliśmy następujące polecenie, aby wydrukować liczbę pól z każdego wiersza tego pliku tekstowego w naszym terminalu:





$ awk ' { drukuj NF } ’ AppleRates.txt

W tym poleceniu mamy słowo kluczowe „awk”, które pokazuje, że uruchamiamy polecenie AWK, po którym następuje instrukcja „print NF”, która po prostu przejdzie przez każdy wiersz docelowego pliku tekstowego i wydrukuje liczbę pól osobno dla każdego wiersz pliku tekstowego. Na koniec mamy nazwę tego pliku tekstowego (którego pola mają być policzone), która w naszym przypadku to „AppleRatest.txt”.



Ponieważ mieliśmy dokładnie taką samą liczbę pól dla wszystkich pięciu linii naszego pliku tekstowego, tj. 2, ta sama liczba jest drukowana jako liczba pól dla wszystkich linii pliku tekstowego z powodu wykonania tego polecenia. Można to zobaczyć na poniższym obrazku:

Przykład nr 2: Wydrukuj liczbę pól z każdego wiersza pliku tekstowego w sposób umożliwiający prezentację:

Wyjście wyświetlone w omówionym powyżej przykładzie można również ładnie przedstawić, wyświetlając numery linii i liczbę pól każdej linii pliku tekstowego. Co więcej, numery linii możemy również oddzielić od liczby pól dowolnym, wybranym przez nas znakiem specjalnym. Aby to pokazać, użyjemy tego samego pliku tekstowego, którego użyliśmy w naszym pierwszym przykładzie. Jednak nasze polecenie, które ma zostać wykonane w tym przypadku, będzie się nieco różnić i wygląda następująco:

$ awk ' { drukuj NR, „---”, NF } ’ AppleRates.txt

W tym poleceniu wprowadziliśmy wbudowaną zmienną AWK „NR”, która po prostu wypisze numery linii wszystkich linii naszego docelowego pliku tekstowego. Ponadto użyliśmy trzech myślników, „—” jako znaku specjalnego, aby oddzielić numery linii od liczby pól naszego dostarczonego pliku tekstowego.

Ten nieco zmodyfikowany wynik tego samego pliku tekstowego pokazano na poniższym obrazku:

Przykład nr 3: Wydrukuj pierwsze i ostatnie pole z każdego wiersza pliku tekstowego:

Oprócz zwykłego zliczania liczby pól we wszystkich wierszach dostarczonego pliku tekstowego, specjalna zmienna „NF” AWK może być również wykorzystana do wyodrębnienia rzeczywistych wartości ostatniego pola z dostarczonego pliku tekstowego. Ponownie użyliśmy tego samego pliku tekstowego, którego użyliśmy w naszych pierwszych dwóch przykładach. Jednak w tym przykładzie chcemy wydrukować rzeczywiste wartości pierwszego i ostatniego pola naszego pliku tekstowego. W tym celu wykonaliśmy następujące polecenie:

$ awk ' { wydrukować 1 $ , $NF } ’ AppleRates.txt

Po słowie kluczowym „awk” w tym poleceniu następuje instrukcja „print $1, $NF”. Zmienna specjalna „$1” została użyta do wydrukowania wartości pierwszego pola lub pierwszej kolumny dostarczonego przez nas pliku tekstowego, natomiast zmienna „$NF” AWK została wykorzystana do wydrukowania wartości ostatniego pola lub ostatniej kolumny naszego docelowego pliku tekstowego. Musisz tutaj zauważyć, że kiedy używamy zmiennej „NF” AWK w obecnej postaci, to jest ona używana do zliczania liczby pól w każdym wierszu; jednak, gdy jest używany z symbolem dolara „$”, po prostu wyodrębnia rzeczywiste wartości z ostatniego pola dostarczonego pliku tekstowego. Reszta polecenia jest mniej więcej taka sama jak w przypadku poleceń użytych w pierwszych dwóch przykładach.

W wynikach pokazanych poniżej widać, że rzeczywiste wartości z pierwszego i ostatniego pola naszego dostarczonego pliku tekstowego zostały wydrukowane na terminalu. Jak widać, ten wynik jest bardzo podobny do wyniku polecenia „cat” tylko dlatego, że w dostarczonym pliku tekstowym mieliśmy tylko dwa pola; więc niejako zawartość całego naszego pliku tekstowego została wydrukowana na terminalu w wyniku wykonania w/w polecenia.

Przykład nr 4: Oddziel rekordy z brakującymi polami w pliku tekstowym:

Czasami w pliku tekstowym znajdują się rekordy z pewnymi brakującymi polami i warto oddzielić te rekordy od tych, które są kompletne pod każdym względem. Można to również zrobić za pomocą zmiennej „NF” AWK. W tym celu stworzyliśmy plik tekstowy o nazwie „ExamMarks.txt”, który zawiera wyniki egzaminów pięciu różnych uczniów z trzech różnych egzaminów wraz z ich nazwiskami. Jednak na trzecim egzaminie niektórzy uczniowie byli nieobecni, przez co brakowało ich wyników. Ten plik tekstowy jest następujący:

Aby odróżnić rekordy z brakującymi polami od rekordów z pełnymi polami, wykonamy polecenie pokazane poniżej:

$ awk ' { drukuj NR, „--- > ”, NF } ’ ExamMarks.txt

To polecenie jest takie samo jak to, którego użyliśmy w naszym drugim przykładzie. Jednak z danych wyjściowych tego polecenia pokazanych na poniższej ilustracji widać, że pierwszy i czwarty rekord są kompletne, podczas gdy drugi, trzeci i piąty rekord zawierają brakujące pola.

Wniosek:

Celem tego artykułu było wyjaśnienie zastosowania zmiennej specjalnej AWK „NF”. Najpierw omówiliśmy pokrótce, jak działa ta zmienna, a następnie dokładnie opracowaliśmy tę koncepcję za pomocą czterech różnych przykładów. Gdy dobrze zrozumiesz wszystkie udostępnione przykłady, będziesz mógł użyć zmiennej „NF” AWK do zliczenia całkowitej liczby pól i wydrukowania rzeczywistych wartości ostatniego pola dostarczonego pliku.