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

Comenzi Linux și abilități Shell

awk: Când coloanele devin programe

awk este ceea ce ajungeți atunci când coloanele devin unitatea de lucru: jurnalele de acces nginx, /etc/passwd, ieșirea df, orice se află în câmpuri. Este un limbaj complet (variabile, matrice, aritmetică, reguli de acțiune tip model) purtând haine de o singură căptușeală, care este exact deghizarea potrivită pentru criminalistica jurnalului. Limita sinceră: orice face awk confortabil este o singură linie, iar orice are nevoie de o pagină de blocuri este un script Python care nu s-a admis încă.

Puncte-cheie

  1. Împărțirea câmpurilor este trucul principal: awk -F: '$3 >= 1000 {print $1}' /etc/passwd listează utilizatorii reali, iar -F'[,|]' tratează delimitatorii cu mai multe caractere când tăierea a renunțat deja.
  2. Numărați cu matrice asociative: awk '{count[$1]++} END {pentru (c în număr) print count[c], c}' /var/log/secure transformă orice jurnal într-un tabel de frecvență pe o singură linie.
  3. NR și NF răspund la întrebările fișierului: „NR==1” este linia antetului, „{print NF}” numără coloanele pe rând, iar compararea NR cu valorile salvate ale altui fișier găsește dubluri și lacune.
  4. Extrasul de potrivire plus este painea zilnică: awk '/ 500 / {print $7, $9}' access.log extrage pagini de eroare cu adrese URL, iar OFS vă permite să reimprimați $0 după ce editați un singur câmp fără a rescrie singur rândul.
  5. Blocurile BEGIN și END sunt locurile în care lucrează agregat: BEGIN setează separatori, regulile de mijloc rulează pe linie, END tipărește totalurile; trei blocuri citesc bine, cinci este un scenariu care poartă o deghizare.
  6. Citarea este adevăratul inamic al shell-urilor: ghilimele simple ale programului, literalele ghilimele duble în interiorul acestuia și amintiți-vă că 7 $ în interiorul unui șir shell cu ghilimele duble nu ajunge niciodată la awk.
  7. Lucrarea numerică devine LC_ALL=C: virgulele locale în numere și colațiile impare transformă comparațiile și sortează lateral, iar fixarea locației este o linie care salvează o după-amiază.
  8. Cunoașteți plafonul: virgulele între ghilimele în interiorul CSV, JSON imbricat sau formatele cu mai multe linii cu stat merg la Python; awk este un bisturiu și rămâne unul.

Notă de teren

O linie neplăcută care a însumat coloanele în dolari dintr-un jurnal cu virgule locale a produs numere pe care nimeni nu le-a pus la îndoială până când contabilitatea a deschis raportul. LC_ALL=C sa mutat în biblioteca noastră de alias în acea săptămână și a rămas.

Întrebări frecvente

awk sau tăiat pentru lucrul la coloană?

tăiat pentru un separator fix și o listă simplă de coloane; awk în momentul în care apar condițiile, expresiile regex, aritmetica sau agregatele, moment în care tăierea este oricum din adâncime.

Cum însumez sau fac media unei coloane?

Agregat în END: awk '{s += $5} END {print s, s/NR}' adaugă și face medii pe câmpul cinci pe rând; îndepărtați mai întâi separatorii de mii dacă o localitate pune virgule în numere.

De ce awk one-liner-ul meu se comportă diferit pe macOS?

macOS furnizează un awk POSIX fără extensii GNU precum -i inplace sau gensub; scripturile care rulează pe Linux pot eșua în liniște acolo, așa că păstrați o singură linie în formă de POSIX sau purtați gawk cu dvs.

Poate awk analiza JSON?

Fără sens: JSON nu are o structură de coloană pe care awk înțelege și hack-urile regex se întrerup pe obiectele imbricate. Utilizați jq, care este forma awk pentru JSON, sau modulul json al lui Python atunci când job-ul crește.

Cum ajută Kinetikatech la comenzi linux și abilități shell

Astăzi asta facem: Comenzile și obiceiurile de scriptare care decid dacă un administrator operează un server sau îl luptă: căutați, transformați, transferați și supravegheați textul și procesele cu instrumentele care se află în fiecare instalare de bază. Serviciul nostru Securitate servere Linux and Administrare servere acoperă totul, de la evaluare la implementare, monitorizare 24/7 și intervenție de urgență în 30 de minute.

Vorbește cu un inginer

Problemă la server? Site hackuit? Încărcare lentă?

Probleme critice soluționate în 30 de minute — nonstop, 7 zile pe săptămână.

Solicită asistență de urgență support@kinetikatech.com