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.