AWK - Wprowadzenie i samouczek

AWK - Wprowadzenie i samouczek

Podczas pracy z Linux jednym z najpotężniejszych narzędzi dostępnych do przetwarzania tekstu jest polecenie AWK. Jest to wszechstronne narzędzie wiersza poleceń, które może być używane do szerokiej gamy zadań, w tym wyszukiwania, filtrowania i manipulowania danymi tekstowymi.

W tym artykule omówimy podstawy AWK, w tym jego składnię, jak używać go w wierszu poleceń oraz kilka podstawowych przykładów tego, jak można go użyć do przetwarzania danych tekstowych.

Co to jest Awk?

AWK to język programowania zaprojektowany do przetwarzania tekstu i ekstrakcji danych. Został opracowany w Bell Labs w latach 70. i jest obecnie standardową funkcją większości systemów operacyjnych opartych na Unixie, w tym Linux.

AWK jest szczególnie przydatne do przetwarzania plików tekstowych, ponieważ pozwala wyszukiwać, filtrować i manipulować danymi na podstawie określonych wzorców lub warunków. Działa poprzez odczyt danych z pliku lub standardowego wejścia, stosując zestaw reguł lub poleceń do tych danych, a następnie wydrukowanie wyników.

Składnia AWK

Podstawowa składnia polecenia AWK jest następująca:

Plik AWK „Wzorzec Action”
1Plik AWK „Wzorzec Action”

Tutaj wzór określa warunki, które należy spełnić, aby akcja została wykonana, a plik określa plik, na którym polecenie powinno działać. Jeśli nie zostanie określony plik, AWK odczytuje dane ze standardowego wejścia (i.mi., klawiatura).

Wzór może być wyrażeniem regularnym lub zakresem wartości, a działaniem może być dowolnym prawidłowym polecenie AWK, w tym instrukcje drukowania, zmienne i pętle.

Oświadczenia One-Liner AWK

Jedną z wielkich rzeczy w AWK jest to, że można go użyć do pisania jednego liniowców - krótkie, potężne polecenia, które można uruchomić bezpośrednio z wiersza poleceń.

Oto kilka przykładów jedno-linii AWK, których można użyć do wykonywania wspólnych zadań przetwarzania tekstu:

  • Wydrukuj pierwszą kolumnę pliku CSV:
    awk -f "," 'drukuj 1 $'.CSV  
  • Wydrukuj określone kolumny pliku CSV:
    awk -f "," 'drukuj 1 $, 3 $'.CSV  

    To polecenie używa opcji -f, aby określić, że plik jest oddzielony przecinkami, a następnie drukuje pierwszą i trzecią kolumny pliku.

  • Policz liczbę linii w pliku:
    AWK „end print nr”.tekst  
  • Wydrukuj wszystkie linie, które pasują do określonego wzoru ::
    AWK '/ wzór/ print'.tekst  
  • Policz liczbę wystąpień wzoru w pliku:
    AWK '/ wzór/ count ++ end print Count'.tekst  
  • Wydrukuj ostatni wiersz pliku:
    AWK „end print”.tekst  
  • Wydrukuj średnią wartość kolumny w pliku:
    AWK 'sum+= 2 $ end print sum/nr'.tekst  
  • Wydrukuj średnią drugiej kolumny w pliku:
    AWK 'sum += 2 $ end print sum/nr'.tekst  
  • Wydrukuj linie w odwrotnej kolejności:
    awk 'a [i ++] = $ 0 end for (j = i-1; j> = 0;) wydrukuj plik [j--]'.tekst  
  • Wydrukuj zawartość pliku:
    AWK „print”.tekst  

    To polecenie po prostu odczytuje zawartość pliku.TXT i drukuje każdą linię na ekranie.

  • Wyszukaj linie zawierające określony wzór:
    AWK '/ error/ print'.dziennik  

    To polecenie wyszukuje wiersze zawierające słowo „błąd” i drukuje je na ekranie.

Może ci się spodobać: Operacje arytmetyczne AWK: Przewodnik dla początkujących po podstawowych metodach obliczeniowych

AWK do administracji systemu

Teraz spójrzmy na niektóre praktyczne przykłady, w jaki sposób AWK można wykorzystać do zadań administracyjnych systemu.

Pili dziennika parsowania

Pliki dziennika są niezbędnym narzędziem dla administratorów systemów do monitorowania wydajności systemu i diagnozowania problemów. Mogą jednak być trudne do odczytania i analizy, zwłaszcza gdy zawierają duże ilości danych.

AWK może być używany do analizowania plików dziennika i wyodrębnienia odpowiednich informacji. Na przykład następujące polecenie wyodrębni wszystkie adresy IP z pliku dziennika dostępu Apache:

AWK 'Drukuj 1 $ dostęp.dziennik
1AWK 'Drukuj 1 $ dostęp.dziennik

To polecenie wydrukuje pierwszą kolumnę pliku dziennika dostępu, który zawiera adres IP klienta.

Monitorowanie zasobów systemowych

AWK można również użyć do monitorowania zasobów systemowych, takich jak zużycie procesora i pamięci. Na przykład następujące polecenie wyświetli 5 najlepszych procesów zużywających najwięcej procesora:

PS Aux | awk 'drukuj 2 $, 3 $, 11 $' | sort -k2rn | głowa -n5
1PS Aux | awk 'drukuj 2 $, 3 $, 11 $' | sort -k2rn | głowa -n5

To polecenie użyje PS do listy wszystkich uruchomionych procesów, a następnie użyć AWK do wyodrębnienia identyfikatora procesu, użycia procesora i nazwy procesu. Polecenie sortowania służy do sortowania wyjścia według użycia procesora, a polecenie głowy służy do wyświetlania tylko 5 najwyższych wyników.

Generowanie raportów

Administratorzy systemu często muszą generować raporty dotyczące różnych aspektów wydajności i użytkowania systemu. AWK można użyć do wyodrębnienia i podsumowania danych z plików dziennika, plików systemowych i innych źródeł.

Na przykład następujące polecenie wygeneruje raport na temat korzystania z dysku wszystkich zamontowanych systemów plików:

df -h | awk 'drukuj 1 $, 5 $
1df -h | awk 'drukuj 1 $, 5 $

To polecenie użyje DF do listy wszystkich zamontowanych systemów plików, a następnie użyje AWK do wyodrębnienia nazwy systemu plików i procentu używanego miejsca na dysku.

Modyfikowanie plików konfiguracyjnych

Pliki konfiguracyjne są istotną częścią administracji systemu i często należy je modyfikować, aby optymalizować wydajność systemu lub rozwiązać problemy. AWK może być używany do modyfikowania plików konfiguracyjnych na miejscu, bez potrzeby ręcznej edycji.

Na przykład następujące polecenie zastąpi wszystkie wystąpienia „localhost” na „przykład.com ”w pliku konfiguracyjnym Apache:

AWK 'gsub (/localHost/, „.com "); print '/etc/apache2/apache2.conf> /tmp /apache2.conf
1AWK 'gsub (/localHost/, „.com "); print '/etc/apache2/apache2.conf> /tmp /apache2.conf

To polecenie użyje AWK do wyszukiwania ciągu „localHost” w pliku konfiguracyjnym Apache i zastąpienia go „przykładem.com ”. Zmodyfikowany plik konfiguracyjny jest następnie zapisywany do pliku tymczasowego.

Wniosek

AWK to potężne narzędzie do przetwarzania tekstu i ekstrakcji danych w Linux. Jest stosunkowo łatwy do nauczenia się i zapewnia szeroki zakres możliwości, które można użyć do manipulowania i przekształcania danych tekstowych.

W tym artykule omówiliśmy podstawy AWK, w tym jego składnię, jak używać go w wierszu poleceń oraz kilka podstawowych przykładów tego, jak można go użyć do przetwarzania danych tekstowych. Omówiliśmy również jedno-liniowce AWK, które są potężnymi poleceniami, których można użyć do wykonywania wspólnych zadań przetwarzania tekstu przy minimalnym wysiłku.

Dzięki tej wiedzy możesz zacząć odkrywać bardziej zaawansowane funkcje AWK, w tym wyrażenia regularne, zmienne i funkcje. Opanowując AWK, możesz stać się bardziej wydajnym i skutecznym użytkownikiem Linux, zdolnym z łatwością przetwarzać duże ilości danych tekstowych.