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

Linux parancsok és shell készségek

awk: Amikor az oszlopok programokká válnak

Az awk az, amit elérsz, amikor az oszlopok válnak a munkaegységekké: nginx hozzáférési naplók, /etc/passwd, df kimenet, bármi, ami a mezőkben él. Ez egy komplett nyelv (változók, tömbök, aritmetika, minta-műveleti szabályok) egysoros ruhát viselve, ami pontosan a megfelelő álca a rönktörvényszéknek. Az őszinte határ: bármi, amit az awk kényelmesen csinál, egysoros, és bármi, amihez egy oldalnyi blokk szükséges, az egy Python-szkript, amely még nem ismeri fel magát.

Kulcspontok

  1. A mezőfelosztás a fő trükk: awk -F: '$3 >= 1000 {print $1}' /etc/passwd listázza a valódi felhasználókat, a -F'[,|]' pedig kezeli a többkarakteres elválasztókat, ha a vágás már feladta.
  2. Számlálás asszociatív tömbökkel: awk '{count[$1]++} END {for (c in count) print count[c], c}' /var/log/secure minden naplót egy sorban gyakorisági táblázattá alakít.
  3. NR és NF válaszol a fájl kérdéseire: 'NR==1' a fejléc, a '{print NF}' soronként számolja az oszlopokat, és az NR összehasonlítása egy másik fájl mentett értékeivel duplikációkat és hiányosságokat talál.
  4. A Match plus kivonat a napi kenyér: az awk '/ 500 / {print $7, $9}' access.log hibaoldalakat húz ki URL-ekkel, az OFS pedig lehetővé teszi, hogy egyetlen mező szerkesztése után újranyomtasson $0-t anélkül, hogy saját maga átírná a sort.
  5. A BEGIN és END blokkokban az összesített munka él: a BEGIN elválasztókat állít be, a középső szabályok soronként futnak, az END összegeket nyomtat; három blokk jól olvasható, öt pedig álruhát viselő forgatókönyv.
  6. Az idézés a shell egysoros valódi ellensége: egyszeri idézőjel a program, dupla idézőjelek benne, és ne feledjük, hogy egy dupla idézőjeles shell karakterláncban 7 dollár soha nem éri el az awk-ot.
  7. A numerikus munka LC_ALL=C-t kap: a számokban szereplő területi vesszők és páratlan egybevetések az összehasonlításokat és a rendezést oldalra fordítják, és a területi beállítás rögzítése egy olyan sor, amely megspórol egy délutánt.
  8. Ismerje meg a felső határt: a CSV-n belüli idézőjeles vesszők, a beágyazott JSON-formátumok vagy az állapottartó többsoros formátumok a Pythonba kerülnek; awk egy szike és az is marad.

Terepi jegyzet

Egy awk egysoros, amely összegezte a dollár oszlopait egy naplóból nyelvi vesszőkkel, olyan számokat hozott létre, amelyeket senki sem kérdőjelezett meg, amíg a könyvelés meg nem nyitotta a jelentést. LC_ALL=C azon a héten beköltözött az álnévkönyvtárunkba, és ott is maradt.

Gyakori kérdések

awk vagy vágott oszlopos munkához?

vágás egy rögzített elválasztóhoz és egy sima oszloplistához; awk abban a pillanatban, amikor a feltételek, a reguláris kifejezés, az aritmetika vagy az aggregátumok megjelennek, ekkor a vágás amúgy is túl van a mélységén.

Hogyan összegezhetek vagy átlagolhatok egy oszlopot?

Összesítés az END-ben: awk '{s += $5} END {print s, s/NR}' hozzáadja és átlagolja az ötös mezőt a sorok között; először távolítsa el az ezres elválasztókat, ha egy területi beállítás vesszőt tesz a számok közé.

Miért viselkedik másképp az awk one-line-em macOS rendszeren?

A macOS POSIX awk-t szállít GNU-kiterjesztések, például -i inplace vagy gensub nélkül; A Linuxon futó szkriptek csendesen meghibásodhatnak, ezért tartsa az egysoros POSIX-alakú fájlokat, vagy vigye magával a gawk-ot.

Az awk elemezni tudja a JSON-t?

Nem értelemszerűen: a JSON-nak nincs oszlopszerkezete, amelyet az awk megért, és a regex feltörések megszakadnak a beágyazott objektumokon. Használja a jq-t, amely az awk alakja a JSON-hoz, vagy a Python json-modulját, amikor a feladat növekszik.

Hogyan segít a Kinetikatech a linux parancsok és shell készségek területén

Ezt már több százszor kezeltük: Azok a parancsok és szkriptelési szokások, amelyek eldöntik, hogy a rendszergazda üzemeltet-e egy kiszolgálót, vagy küzd ellene: keressen, alakítson, vigyen át és felügyeljen szöveget és folyamatokat a minden alaptelepítésben megtalálható eszközökkel. A Linux-szerverbiztonság és Szerveradminisztráció szolgáltatással a teljes kört megkapod: felmérünk, bevezetünk, szünet nélkül figyelünk, és szükség esetén 30 percen belül beavatkozunk.

Beszéljen egy mérnökkel

Probléma a szerverrel? Feltörték a webhelyet? Lassú a betöltés?

Kritikus problémák megoldása 30 percen belül — a hét minden napján, éjjel-nappal.

Sürgős támogatás kérése support@kinetikatech.com