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

Comandi Linux e competenze della shell

awk: quando le colonne diventano programmi

awk è ciò che raggiungi quando le colonne diventano l'unità di lavoro: log di accesso nginx, /etc/passwd, output df, tutto ciò che risiede nei campi. È un linguaggio completo (variabili, array, aritmetica, regole di pattern-azione) che indossa abiti da battuta, che è esattamente il travestimento giusto per l'analisi forense dei log. Il confine onesto: tutto ciò che awk fa comodamente è una riga, e tutto ciò che necessita di una pagina di blocchi è uno script Python che non si è ancora ammesso.

Punti chiave

  • La suddivisione dei campi è il trucco principale: awk -F: '$3 >= 1000 {print $1}' /etc/passwd elenca gli utenti reali e -F'[,|]' gestisce i delimitatori multi-carattere quando cut si è già arreso.
  • Conteggio con array associativi: awk '{count[$1]++} END {for (c in count) print count[c], c}' /var/log/secure trasforma qualsiasi log in una tabella di frequenza in una riga.
  • NR e NF rispondono alle domande sui file: 'NR==1' è la riga di intestazione, '{print NF}' conta le colonne per riga e confrontando NR con i valori salvati di un altro file vengono rilevati duplicati e lacune.
  • Match plus extract è il pane quotidiano: awk '/ 500 / {print $7, $9}' access.log estrae pagine di errore con URL e OFS ti consente di ristampare $0 dopo aver modificato un singolo campo senza riscrivere tu stesso la riga.
  • I blocchi BEGIN e END sono i luoghi in cui risiede il lavoro aggregato: BEGIN imposta i separatori, le regole centrali vengono eseguite per riga, END stampa i totali; tre blocchi si leggono bene, cinque è una sceneggiatura mascherata.
  • Le virgolette sono il vero nemico delle battute di shell della shell: virgolette singole del programma, virgolette letterali al suo interno e ricorda che $7 all'interno di una stringa di shell tra virgolette doppie non raggiunge mai awk.
  • Il lavoro numerico ottiene LC_ALL=C: le virgole locali nei numeri e le regole di confronto dispari trasformano i confronti e gli ordinamenti lateralmente, e fissare la locale è una riga che salva un pomeriggio.
  • Conosci il limite massimo: le virgole tra virgolette all'interno di CSV, JSON nidificato o formati multilinea con stato vanno a Python; awk è un bisturi e rimane tale.

Nota dal campo

Una riga imbarazzante che sommava le colonne in dollari da un registro con virgole locali produceva numeri che nessuno metteva in discussione finché la contabilità non apriva il rapporto. LC_ALL=C si è spostato nella nostra libreria alias quella settimana e vi è rimasto.

Domande frequenti

awk o tagliato per il lavoro sulle colonne?

tagliato per un separatore fisso e un elenco di colonne semplici; awk nel momento in cui compaiono condizioni, regex, aritmetica o aggregati, a quel punto il taglio è comunque fuori dalla sua profondità.

Come si somma o si calcola la media di una colonna?

Aggregato in END: awk '{s += $5} END {print s, s/NR}' aggiunge e fa la media del campo cinque su tutte le righe; rimuovi prima i separatori delle migliaia se una lingua inserisce virgole nei numeri.

Perché il mio awk one-liner si comporta diversamente su macOS?

macOS fornisce un awk POSIX senza estensioni GNU come -i inplace o gensub; gli script eseguiti su Linux possono fallire silenziosamente lì, quindi mantieni la forma POSIX di una riga o porta con te gawk.

Awk può analizzare JSON?

Non in modo significativo: JSON non ha una struttura di colonne che awk comprende e gli hack delle espressioni regolari si interrompono sugli oggetti nidificati. Usa jq, che è la forma di awk per JSON, o il modulo json di Python quando il lavoro cresce.

Come Kinetikatech aiuta con comandi linux e competenze della shell

A essere onesti, la maggior parte dei team arriva da noi dopo averci provato da sola: I comandi e le abitudini di scripting che decidono se un amministratore gestisce un server o lo combatte: cerca, trasforma, trasferisci e supervisiona testo e processi con gli strumenti presenti in ogni installazione di base. Il nostro servizio Sicurezza server Linux e Gestione server esiste proprio per evitarLe di imparare comandi linux e competenze della shell nel modo peggiore: pensiamo noi alla configurazione, al monitoraggio e alle sorprese delle 3 di notte.

Parli con un ingegnere

Problemi al server? Sito violato? Sito lento?

Incidenti critici gestiti in 30 minuti — 24 ore su 24, 7 giorni su 7.

Richiedi supporto urgente support@kinetikatech.com