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.