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

Linux naredbe i vještine školjke

awk: Kada stupci postanu programi

awk je ono za čim posegnete kada stupci postanu jedinica rada: nginx pristupni zapisnici, /etc/passwd, df izlaz, sve što živi u poljima. To je potpuni jezik (varijable, nizovi, aritmetika, pravila obrasca-akcije) koji nosi jednoličnu odjeću, što je upravo prava maska ​​za log forenziku. Iskrena granica: sve što awk radi udobno je jednolinijski, a sve što treba stranicu blokova je Python skripta koja se još nije priznala.

Ključne točke

  • Dijeljenje polja je ključni trik: awk -F: '$3 >= 1000 {print $1}' /etc/passwd ispisuje stvarne korisnike, a -F'[,|]' rukuje razdjelnicima s više znakova kada je cut već odustao.
  • Brojanje s asocijativnim nizovima: awk '{count[$1]++} END {for (c in count) print count[c], c}' /var/log/secure pretvara bilo koji dnevnik u frekvencijsku tablicu u jednom retku.
  • NR i NF odgovaraju na pitanja datoteke: 'NR==1' je redak zaglavlja, '{print NF}' broji stupce po retku, a usporedbom NR sa spremljenim vrijednostima druge datoteke pronalaze se duplikati i praznine.
  • Match plus ekstrakt je svagdašnji kruh: awk '/ 500 / {print $7, $9}' access.log izvlači stranice s pogreškama s URL-ovima, a OFS vam omogućuje ponovno ispisivanje $0 nakon uređivanja jednog polja bez ponovnog pisanja retka.
  • Blokovi BEGIN i END su mjesto gdje živi agregatni rad: BEGIN postavlja razdjelnike, srednja pravila izvode se po retku, END ispisuje ukupne vrijednosti; tri bloka dobro se čitaju, pet je scenarij pod maskom.
  • Citiranje je pravi neprijatelj jednolinijskog programa ljuske: stavite program u jednostruke navodnike, unutar njega literale u dvostruke navodnike i zapamtite da $7 unutar niza ljuske s dvostrukim navodnicima uopće ne doseže awk.
  • Numerički rad dobiva LC_ALL=C: zarezi mjesnih oznaka u brojevima i neparne usporedbe okreću usporedbe i sortiranja postrance, a prikvačivanje mjesnih oznaka jedan je redak koji štedi jedno poslijepodne.
  • Upoznajte se s gornjom granicom: zarezi u navodnicima unutar CSV-a, ugniježđenog JSON-a ili višelinijskog formata sa stanjem idu u Python; awk je skalpel i ostaje takav.

Terenska bilješka

Awk jednolinijski program koji je zbrajao stupce u dolarima iz dnevnika sa zarezima o lokalizaciji proizveo je brojeve koje nitko nije dovodio u pitanje dok računovodstvo nije otvorilo izvješće. LC_ALL=C se tog tjedna preselio u našu knjižnicu aliasa i ostao.

Često postavljana pitanja

awk ili rez za rad u stupcima?

rez za jedan fiksni razdjelnik i običan popis stupaca; awk u trenutku kada se pojave uvjeti, regularni izraz, aritmetika ili agregati, u tom trenutku rez je ionako izvan svoje dubine.

Kako mogu zbrojiti ili prosječiti stupac?

Agregat u END: awk '{s += $5} END {print s, s/NR}' dodaje i prosječno polje pet preko redaka; prvo uklonite razdjelnike tisućica ako lokalizacija stavlja zareze u brojeve.

Zašto se moj awk one-liner ponaša drugačije na macOS-u?

macOS isporučuje POSIX awk bez GNU proširenja poput -i inplace ili gensub; skripte koje se izvode na Linuxu tamo mogu tiho zakazati, stoga neka budu jednolinijski u obliku POSIX-a ili nosite gawk sa sobom.

Može li awk analizirati JSON?

Nema smisla: JSON nema strukturu stupaca koju awk razumije, a hakiranje regularnih izraza razbija ugniježđene objekte. Koristite jq, koji je awkov oblik za JSON, ili Pythonov json modul kada posao raste.

Kako Kinetikatech pomaže kod linux naredbe i vještine školjke

Ovo smo rješavali stotine puta: Naredbe i navike skriptiranja koje odlučuju hoće li administrator upravljati poslužiteljem ili se boriti protiv njega: pretražujte, transformirajte, prenosite i nadzirite tekst i procese s alatima koji se nalaze u svakoj osnovnoj instalaciji. S Sigurnost Linux servera i Upravljanje serverima dobivate puni krug: procjenjujemo, implementiramo, nadziremo bez prestanka i interveniramo u 30 minuta kad je potrebno.

Razgovarajte s inženjerom

Problem sa serverom? Hakirana stranica? Sporo učitavanje?

Kritični problemi riješeni u 30 minuta — non-stop, 7 dana u tjednu.

Zatražite hitnu podršku support@kinetikatech.com