Awk

10 niesamowitych przykładów poleceń Awk

10 niesamowitych przykładów poleceń Awk
Polecenie Awk to potężne narzędzie do przetwarzania danych. Pobiera dane wejściowe, manipuluje nimi i daje wyniki na standardowym wyjściu. Na wierszach i kolumnach pliku można wykonywać różne operacje.

Znajomość podstaw polecenia „awk” jest bardzo ważna, jeśli chodzi o wydajne przetwarzanie danych, a ten post obejmuje kluczowe cechy polecenia „awk”. Sprawdźmy najpierw składnię:

$ awk [opcje] [plik]

Niektóre z najczęściej używanych opcji podano w poniższej tabeli:

Opcja Opis
-fa Aby określić separator plików
-fa Określ plik zawierający skrypt „awk”k
-v Aby przypisać zmienną

Rzućmy okiem na kilka przykładów użycia polecenia „awk”, a dla demonstracji utworzyłem plik tekstowy o nazwie plik testowy.tekst:

1. Jak wydrukować kolumnę pliku za pomocą polecenia awk??

Polecenia „awk” można użyć do pobrania określonej kolumny pliku tekstowego. Aby wydrukować zawartość pliku użyj:

$cat testFile.tekst

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

$awk 'print $2' testFile.tekst

Aby wydrukować więcej niż jedno pole, użyj polecenia:

$awk 'print $1,$2,$3' testFile.tekst

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

$awk 'print $1$2$3' testFile.tekst

2. Jak używać wyrażenia regularnego z poleceniem awk:

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

$awk '/Historia/ print $2' plik testowy.tekst

Wyniki wyraźnie pokazują, że tylko „Sam” i „Tommy” studiują na kursie „Historia”.

3. Jak używać wyrażenia relacyjnego z poleceniem „awk”:

Aby dopasować zawartość konkretnego pola, można użyć wyrażenia relacyjnego. Aby dopasować dowolny ciąg lub wyrażenie do pola, wskaż pole i użyj operatora porównania „~” ze wzorcem przedstawionym w następującym poleceniu:

$awk '$3 ~/is/ print $2' plik testowy.tekst

Powyższe dane wyjściowe wyświetlające każde pole w kolumnie 2 w stosunku do każdego pola zawierającego „jest” w kolumnie 3.

Aby uzyskać przeciwne wyjście powyższego polecenia, użyj „! ~” operator:

$awk '3$! ~/is/ print $2' testFile.tekst

Dla porównania możemy również użyć operatorów takich jak większa niż „>” i mniejsza niż „<” and equal “=” as well:

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

Na wydruku wydrukowano nazwiska osób, które uzyskały oceny powyżej 70.

4. Jak używać wzorca zakresu z poleceniem awk:

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

$awk '/Joel/, /Marlene/ print $3' plik testowy.tekst

Dane wyjściowe pokazują tematy z zakresu od „Joel” do „Marlene” z kolumny 2. Możemy użyć podwójnego znaku równości „==”, aby zdefiniować zakres; zobacz przykład poniżej:

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

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

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

Użycie operatorów logicznych, takich jak OR „||”, ORAZ „&&” pozwala łączyć wzorce wyszukiwania for. Użyj następującego polecenia

$awk '$4>80 && 6$>0.4 drukuj $2' testFile.tekst

Powyższe polecenie wypisuje imiona osób w czwartym polu większym niż 80 i szóstym polu większym niż 0.4. A tylko dwie płyty spełniają ten warunek.

6. Wyrażenia specjalne polecenia awk:

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

POCZĄTEK: Aby wykonać akcję przed przetworzeniem danych

KONIEC: Aby wykonać czynność po przetworzeniu danych data

$awk 'BEGIN print “Przetwarzanie rozpoczęte”; drukuj $2; END print “Przetwarzanie zakończone”' testFile.tekst

7. Przydatna zmienna wbudowana polecenia awk:

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

Zmienna Opis
NF Podaje liczbę pól w danych
NR Podaje numer aktualnego rekordu
NAZWA PLIKU Wyświetla nazwę aktualnie przetwarzanego pliku currently
FS i OFS Separator pól i separator pól wyjściowych
RS i ORS Oddziela rekord i wyjściowy separator rekordu

Na przykład:

$awk 'ENDprint “Nazwa pliku to ” FILENAME “ma” NF “pola i” NR “rekordy”' testFile.tekst

Używamy „END”, ale jeśli użyjesz „BEGIN”, wynik da 0 pól i 0 rekordów.

8. Jak zmienić separator rekordów:

Domyślnym separatorem w rekordzie jest zwykle spacja; jeśli jest przecinek „” lub kropka „.” jako separator pól, a następnie użyj opcji „FS” wraz z separatorem.

Miejmy inny plik, w którym pola danych są oddzielone przecinkami „:”:

$cat plik testowy2.tekst
$awk 'BEGIN FS= “:” print $2' testFile2.tekst

Ponieważ separatorem pliku jest dwukropek, 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 “:” 'print $2' testFile2.tekst

Domyślnym separatorem rekordów jest „nowa linia”, a aby ustawić separator rekordów na „:”, użyj:

$awk 'BEGIN RS = “:”print $1' testFile2.tekst

9. Akcje AWK:

Akcje awk to małe programy, które są otoczone nawiasami „” i mają więcej niż jedną instrukcję oddzieloną średnikami„;”.

Najczęściej używaną instrukcją z poleceniem „awk” jest instrukcja „print”. Na przykład, aby wydrukować tekst z każdym rekordem, użyj ciągu tekstowego w cudzysłowie:

$awk '„To jest pole”, $2' plik testowy.tekst

Wykonajmy prostą operację sumowania za pomocą awk:

$awk 'sum += $4 END printf “%d\n”, sum' testFile.tekst

10. Tworzenie programu awk:

Zacznijmy od programowania „awk”, poniższe programowanie to po prostu mnożenie:

ZACZYNAĆ
i=2
podczas (j<4)

print “Mnożenie 2 przez” j “ to ” i*j;
jot++

Zapisz program pod nazwą „mójKod.awk” i aby go uruchomić, otwórz terminal i wpisz:

$awk -f mójKod.awk

Wniosek:

Polecenie „awk” jest poręcznym poleceniem do przetwarzania, skanowania danych plików tekstowych, na przykład oddzielania określonego pola pliku; używamy polecenia „awk”. Ułatwia wyszukiwanie czegokolwiek w dowolnej formie lub wzorze z plików tekstowych. W tym przewodniku rozumiemy podstawy polecenia „awk” i jego użycia. Polecenie „awk” sprawdza poprawność danych, generuje raporty, a nawet analizuje pliki. Korzystanie z prostych poleceń „awk” umożliwia także użytkownikom pisanie małych programów do wydajniejszego przetwarzania danych.

Gry Jak używać AutoKey do automatyzacji gier Linux
Jak używać AutoKey do automatyzacji gier Linux
AutoKey to narzędzie do automatyzacji pulpitu dla systemów Linux i X11, zaprogramowane w Python 3, GTK i Qt. Korzystając ze skryptów i funkcji MAKRO, ...
Gry How to Show FPS Counter in Linux Games
How to Show FPS Counter in Linux Games
Linux gaming got a major push when Valve announced Linux support for Steam client and their games in 2012. Since then, many AAA and indie games have m...
Gry How to download and Play Sid Meier's Civilization VI on Linux
How to download and Play Sid Meier's Civilization VI on Linux
Introduction to the game Civilization 6 is a modern take on the classic concept introduced in the series of the Age of Empires games. The idea was fai...