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

Linuxové příkazy

awk: Když se sloupce stanou programy

awk je to, po čem sáhnete, když se sloupce stanou jednotkou práce: přístupové protokoly nginx, /etc/passwd, výstup df, vše, co žije v polích. Je to kompletní jazyk (proměnné, pole, aritmetika, pravidla vzorových akcí) v jednovrstvém oblečení, což je přesně ten správný převlek pro forenzní vědu. Upřímná hranice: cokoli, co awk pohodlně dělá, je jednořádkové a vše, co potřebuje stránku bloků, je skript Pythonu, který se ještě nepřiznal.

Klíčové body

  • Základním trikem je dělení pole: awk -F: '$3 >= 1000 {print $1}' /etc/passwd uvádí skutečné uživatele a -F'[,|]' zpracovává víceznakové oddělovače, když se řez již vzdal.
  • Počítejte s asociativními poli: awk '{count[$1]++} END {for (c in count) print count[c], c}' /var/log/secure přemění libovolný log na frekvenční tabulku na jednom řádku.
  • Otázky týkající se souboru odpovědí NR a NF: 'NR==1' je řádek záhlaví, '{print NF}' počítá sloupce na řádek a porovnání NR s uloženými hodnotami jiného souboru najde duplikáty a mezery.
  • Match plus extrakt je denní chléb: awk '/ 500 / {print $7, $9}' access.log stahuje chybové stránky s URL a OFS vám umožňuje znovu vytisknout $0 po úpravě jediného pole, aniž byste museli přepisovat řádek sami.
  • Bloky BEGIN a END jsou místem, kde žije agregovaná práce: BEGIN nastavuje oddělovače, prostřední pravidla běží na řádku, END tiskne součty; tři bloky se čtou dobře, pět je scénář v přestrojení.
  • Citace jsou skutečným nepřítelem skořápkových jednoduchých uvozovek: uvádějte program v jednoduchých uvozovkách, v něm uvádějte literály ve dvou uvozovkách a pamatujte, že 7 $ uvnitř řetězce s dvojitými uvozovkami nikdy nedosáhne awk.
  • Číselná práce získá LC_ALL=C: čárky národního prostředí v číslech a liché porovnávání otočí srovnání a seřadí stranou a připnutí národního prostředí je jeden řádek, který ušetří odpoledne.
  • Poznejte strop: čárky v uvozovkách uvnitř CSV, vnořené JSON nebo stavové víceřádkové formáty jdou do Pythonu; awk je skalpel a zůstane jím.

Poznámka z terénu

Nešikovný jednoduchý řádek, který sčítal dolarové sloupce z deníku s místními čárkami, vytvářel čísla, která nikdo nezpochybňoval, dokud účetnictví neotevřelo zprávu. LC_ALL=C se ten týden přestěhoval do naší knihovny aliasů a zůstal.

Časté dotazy

awk nebo cut pro sloupovou práci?

střih na jeden pevný oddělovač a prostý seznam sloupců; awk v okamžiku, kdy se objeví podmínky, regulární výraz, aritmetika nebo agregáty, kdy je řez stejně mimo svou hloubku.

Jak sečtu nebo zprůměruji sloupec?

Aggregate in END: awk '{s += $5} END {print s, s/NR}' přidá a zprůměruje pole pět přes řádky; Pokud národní prostředí vkládá do čísel čárky, nejprve odstraňte oddělovače tisíců.

Proč se můj awk one-liner chová v systému macOS jinak?

macOS dodává POSIX awk bez GNU rozšíření jako -i inplace nebo gensub; skripty, které běží na Linuxu, tam mohou tiše selhat, takže mějte jednořádky ve tvaru POSIXu nebo si noste s sebou gawk.

Může awk analyzovat JSON?

Není to smysluplné: JSON nemá žádnou sloupcovou strukturu, které awk rozumí, a hackování regulárních výrazů se přerušuje na vnořené objekty. Když úloha roste, použijte jq, což je tvar awk pro JSON, nebo modul json Pythonu.

Jak Kinetikatech pomáhá s linuxové příkazy

Upřímně, většina týmů se na nás obrací poté, co to nejdřív zkusila sama: Příkazy a skriptovací návyky, které rozhodují o tom, zda správce provozuje server nebo s ním bojuje: prohledávejte, transformujte, přenášejte a dohlížejte na text a procesy pomocí nástrojů, které jsou součástí každé základní instalace. Naše služba Zabezpečení linuxových serverů a Správa serverů je tu proto, abyste linuxové příkazy nepoznávali na vlastní kůži; my se postaráme o zprovoznění, dohled a překvapení ve tři ráno.

Promluvte si s inženýrem

Problém se serverem? Hacknutý web? Pomalé načítání?

Kritické problémy vyřešeny do 30 minut — nepřetržitě, 7 dní v týdnu.

Požádat o pohotovostní podporu support@kinetikatech.com