NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
PL

Polecenia systemu Linux i umiejętności powłoki

awk: Kiedy kolumny stają się programami

awk jest tym, po co sięgasz, gdy kolumny stają się jednostką pracy: logi dostępu nginx, /etc/passwd, dane wyjściowe df, wszystko, co żyje w polach. Jest to kompletny język (zmienne, tablice, arytmetyka, reguły działania według wzorców) ubrany w jednowierszowe ubranie, co jest dokładnie odpowiednią maską dla kryminalistyki kłód. Uczciwa granica: wszystko, co awk robi wygodnie, jest jednowierszowe, a wszystko, co wymaga strony bloków, to skrypt Pythona, który jeszcze się nie przyznał.

Kluczowe punkty

  • Dzielenie pól to podstawowa sztuczka: awk -F: '$3 >= 1000 {print $1}' /etc/passwd wyświetla listę prawdziwych użytkowników, a -F'[,|]' obsługuje wieloznakowe ograniczniki, gdy wycinanie już się zakończyło.
  • Zliczanie za pomocą tablic asocjacyjnych: awk '{count[$1]++} END {for (c in count) print count[c], c}' /var/log/secure zamienia dowolny dziennik w tabelę częstotliwości w jednej linii.
  • NR i NF odpowiadają na pytania dotyczące pliku: „NR==1” to linia nagłówka, „{print NF}” zlicza kolumny w wierszu, a porównanie NR z wartościami zapisanymi w innym pliku pozwala znaleźć duplikaty i luki.
  • Dopasowanie i ekstrakt to chleb powszedni: awk '/ 500 / {print $7, $9}' access.log pobiera strony błędów z adresami URL, a OFS umożliwia ponowne wydrukowanie $0 po edycji pojedynczego pola bez konieczności samodzielnego przepisywania linii.
  • Bloki BEGIN i END to miejsce, w którym działa agregacja: BEGIN ustawia separatory, środkowe reguły działają w każdym wierszu, END wyświetla sumy; trzy bloki czyta się dobrze, pięć to scenariusz w przebraniu.
  • Cytowanie jest prawdziwym wrogiem jednowierszowych poleceń powłoki: umieść program w pojedynczym cudzysłowie, wewnątrz niego literały w podwójnym cudzysłowie i pamiętaj, że 7 $ w ciągu powłoki w podwójnym cudzysłowie nigdy w ogóle nie osiąga awk.
  • Praca numeryczna otrzymuje LC_ALL=C: przecinki ustawień regionalnych w liczbach i zestawienia nieparzyste odwracają porównania i sortowanie na boki, a przypinanie ustawień regionalnych to jedna linia, która oszczędza popołudnie.
  • Poznaj pułap: cudzysłowy w formacie CSV, zagnieżdżonym JSON lub stanowych formatach wielowierszowych trafiają do Pythona; awk jest skalpelem i nim pozostanie.

Notatka z praktyki

Jednoliniowy awk, który sumował kolumny dolarów z dziennika z przecinkami wskazującymi ustawienia regionalne, dał liczby, których nikt nie kwestionował, dopóki księgowość nie otworzyła raportu. LC_ALL=C przeniósł się do naszej biblioteki aliasów w tym tygodniu i tam pozostał.

Częste pytania

awk czy wyciąć do pracy kolumnowej?

wycięte dla jednego stałego separatora i zwykłej listy kolumn; awk w momencie, gdy pojawiają się warunki, wyrażenia regularne, arytmetyka lub agregaty, w którym to momencie cięcie i tak jest poza jego głębokością.

Jak sumować lub uśredniać kolumnę?

Agreguj na END: awk '{s += $5} END {print s, s/NR}' dodaje i uśrednia pięć pól w poprzek linii; usuń najpierw separatory tysięcy, jeśli ustawienia regionalne umieszczają przecinki w liczbach.

Dlaczego mój jednowierszowy awk zachowuje się inaczej w systemie macOS?

macOS dostarcza awk POSIX bez rozszerzeń GNU, takich jak -i inplace lub gensub; skrypty działające pod Linuksem mogą tam po cichu zawieść, więc trzymaj jednowierszowe skrypty w kształcie POSIX lub noś ze sobą gawk.

Czy awk może analizować JSON?

Mało znaczące: JSON nie ma struktury kolumn zrozumiałej dla awk, a hacki wyrażeń regularnych psują się na zagnieżdżonych obiektach. Użyj jq, który jest kształtem awk dla JSON, lub modułu json Pythona, gdy zadanie rośnie.

Jak Kinetikatech pomaga w polecenia systemu linux i umiejętności powłoki

Tym zajmujemy się na co dzień: Polecenia i nawyki związane z tworzeniem skryptów, które decydują o tym, czy administrator obsługuje serwer, czy z nim walczy: przeszukuje, przekształca, przesyła i nadzoruje tekst i procesy za pomocą narzędzi znajdujących się w każdej podstawowej instalacji. Nasza usługa Bezpieczeństwo serwerów Linux i Zarządzanie serwerami obejmuje to kompleksowo: ocenę, wdrożenie, monitoring 24/7 oraz reakcję awaryjną w 30 minut.

Porozmawiaj z inżynierem

Problem z serwerem? Zhakowana strona? Wolna witryna?

Incydenty krytyczne w 30 minut — 24 godziny na dobę, 7 dni w tygodniu.

Poproś o wsparcie alarmowe support@kinetikatech.com