Top 10 Niesamowitych przykładów polecenia AWK

Top 10 Niesamowitych przykładów polecenia AWK
Polecenie AWK to potężne narzędzie do przetwarzania danych. Uzyskuje dane wejściowe, manipuluje je i daje wyniki standardowego wyjścia. Różne operacje można wykonywać na rzędach i kolumnach pliku.

Znajomość zasadniczych poleceń „AWK” jest bardzo ważna, jeśli chodzi o efektywne przetwarzanie danych, a ten post obejmuje kluczowe funkcje polecenia „AWK”. Najpierw sprawdźmy składnię:

$ awk [opcje] [plik]

Niektóre z powszechnie używanych opcji podano w poniższej tabeli:

Opcja Opis
-F Aby określić separator plików
-F Podaj plik zawierający skrypt „AWK”
-v Aby przypisać zmienną

Rzućmy okiem na niektóre przykłady dotyczące korzystania z polecenia „AWK”, a dla demonstracji wykonałem plik tekstowy pod nazwą test testowy.tekst:

Jak wydrukować kolumnę pliku za pomocą polecenia AWK?

Polecenie „AWK” można użyć do uzyskania określonej kolumny pliku tekstowego. Aby wydrukować zawartość użycia pliku:

$ CAT TestFile.tekst

Teraz, aby wydrukować drugą kolumnę pliku, użyj:

$ awk 'drukuj 2 $'.tekst

Aby wydrukować więcej niż jeden pól, użyj polecenia:

$ awk 'drukuj 1 USD, 2 USD, 3 USD' '.tekst

Jeśli nie użyjesz przecinka „”, to wyjście będzie bez spacji:

$ awk 'drukuj 1 $ 2 $ 3 „.tekst

Jak używać wyrażenia regularnego z poleceniem AWK:

Aby dopasować ciągi lub dowolne wyrażenie, używamy na przykład „//”, jeśli chcesz wydrukować nazwiska osób, które studiują „historię”, użyj:

$ awk '/ history/ drukuj 2 $'.tekst

Wyjście wyraźnie pokazuje, że tylko „Sam” i „Tommy” studiują kurs „historii”.

Jak używać wyrażenia relacyjnego z poleceniem „AWK”:

Aby dopasować zawartość określonego pola, można zastosować wyrażenie relacyjne. Aby dopasować dowolny ciąg lub wyrażenie do pola, wskazuj pole i użyj operatora porównawczego „~” z wzorem, jak przedstawiono w następującym poleceniu:

$ awk '$ 3 ~/ IS/ drukuj 2 $' TestFile.tekst

Powyższe wyjście wyświetlające każde pole w kolumnie 2 na każdym polu zawierającym „jest” w kolumnie 3.

I aby uzyskać przeciwne wyjście z powyższego polecenia, użyj „! ~ ”Operator:

$ awk '3 $! ~/ is/ drukuj 2 $ 'testowy.tekst

Dla porównania możemy również korzystać z operatorów takich jak „>” i mniej niż „<” and equal “=” as well:

$ awk '$ 4> 70 drukuj 2 $'.tekst

Wyjście wydrukowało nazwiska ludzi, którzy otrzymali oceny ponad 70.

Jak używać wzoru zasięgu z poleceniem AWK:

Do wyszukiwania można również użyć zakresu; Po prostu użyj przecinka „”, aby oddzielić zakres przedstawiony w poniższym poleceniu:

$ awk '/joel/,/marlene/drukuj 3 $' testowy.tekst

Dane wyjściowe pokazuje tematy zakresu od „Joel” do „Marlene” od kolumny 2. Możemy użyć podwójnego znaku równego „==” do zdefiniowania zakresu; Zobacz poniższy przykład:

$ awk '$ 4 == 80, 4 $ == 90 drukuj 0 $'.tekst

Wyjście wyświetla nazwy ludzi z kolumny 2 dla zakresu znaków „70 do 80” z kolumny 4.

Jak połączyć wzór za pomocą operatora logicznego:

Korzystanie z operatorów logicznych, takich jak lub „||” i „&&” pozwala na łączenie wzorów wyszukiwania. Użyj następującego polecenia

$ awk '$ 4> 80 && $ 6> 0.4 wydrukuj 2 $ „test testowy.tekst

Powyższe polecenie drukuje nazwy ludzi na czwartym polu bardziej znaczące niż 80 i szóste pole większe niż 0.4. I tylko dwa rekordy spełniają stan.

Specjalne wyrażenia AWK Command:

Istnieją dwa specjalne wyrażenia, „ZACZYNAĆ" I "KONIEC”:

Rozpocznij: wykonać akcję przed przetworzeniem danych

Koniec: wykonać akcję po przetworzeniu danych

$ awk 'start print „przetwarzanie się zaczęło”; drukuj 2 $; End druk „przetwarzanie zakończyło się” 'testowy.tekst

Przydatna wbudowana zmienna polecenia AWK:

Polecenie AWK ma różne zmienne, które pomagają w przetwarzaniu danych:

Zmienny Opis
Nf Daje liczbę pól w danych
Nr Daje liczbę bieżących rekordów
NAZWA PLIKU Wyświetla nazwę pliku, który jest obecnie przetwarzany
FS i OFS Separator pola i separator pola wyjściowego
Rs i Ors Oddziela separator rekordów i wyjściowych

Na przykład:

$ awk 'end drukuj „nazwa pliku to nazwa pliku„ ma ”nf„ pola i ”nr„ rejestr ”' testowy.tekst

Używamy „End”, ale jeśli użyjesz „Rozpocznij”, dane wyjściowe dałoby 0 pól i 0 rekordów.

Jak zmienić separator rekordów:

Domyślnym separatorem w rekordzie jest zwykle przestrzeń; Jeśli istnieje przecinek „” lub kropka „.”Jako separator pola, a następnie użyj opcji„ FS ”wraz z separatorem.

Miejmy kolejny plik, w którym pola danych są oddzielone przez kolony przecinka „:”:

$ CAT TESTFILE2.tekst
$ awk 'start fs = „:” print 2 $' testFile2.tekst

Ponieważ separator pliku jest dwukropkiem, ale polecenie „AWK” jest nawet korzystne dla takich plików, po prostu użyj opcji „FS”.

Można również użyć „-f”:

$ awk -f „:” 'drukuj 2 $' testFile2.tekst

Domyślnym separatorem rekordów jest „Newline” i ustawić separator rekordów na „:”, Użyj:

$ awk 'start rs = ":" print $ $' testFile2.tekst

Działania AWK:

Działania AWK są niewielkimi programami otoczonymi nawiasami „” i mają więcej niż jedno stwierdzenie oddzielone półkollami „;”.

Najczęściej używanym instrukcją z poleceniem „AWK” jest instrukcja „drukuj”. Na przykład, aby wydrukować tekst z każdym rekordem, użyj ciągu tekstu w cytatach:

$ awk '„to pole”, 2 $ „TestFile.tekst

Wykonajmy prostą operację sumy za pomocą AWK:

$ awk 'sum += 4 $ end printf „%d \ n”, sum' testowy plik.tekst

Tworzenie programu AWK:

Zacznijmy od programowania „AWK”, podane poniżej programowanie to po prostu mnożenie:

ZACZYNAĆ
i = 2
While (j<4)

Wydrukuj „Mnożenie 2 za pomocą„ J „IS” I*J;
J++

Zapisz program pod nazwą „Mycode.Awk”I aby go uruchomić, otwórz terminal i wpisz:

$ awk -f mycode.Awk

Wniosek:

Polecenie „AWK” jest przydatnym poleceniem do przetwarzania, skanowania danych plików tekstowych, takich jak oddzielenie dowolnego pola pliku; Używamy polecenia „AWK”. Ułatwia wyszukiwanie wszystkiego w dowolnym formie lub wzorcu z plików tekstowych. W tym przewodniku rozumiemy podstawy polecenia „AWK” i jego użycie. Polecenie „AWK” weryfikuje dane, generuje raporty, a nawet analizuje pliki. Korzystanie z prostych poleceń „AWK” umożliwia również użytkownikom pisanie małych programów w celu wydajniejszego przetwarzania danych.