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

Linux-Befehle und Shell-Fähigkeiten

awk: Wenn Spalten zu Programmen werden

awk ist das, wonach Sie greifen, wenn Spalten zur Arbeitseinheit werden: Nginx-Zugriffsprotokolle, /etc/passwd, df-Ausgabe, alles, was in Feldern lebt. Es handelt sich um eine vollständige Sprache (Variablen, Arrays, Arithmetik, Muster-Aktionsregeln) im Einzeiler-Gewand, was genau die richtige Tarnung für die Protokollforensik darstellt. Die ehrliche Grenze: Alles, was awk bequem macht, ist ein Einzeiler, und alles, was eine Seite mit Blöcken benötigt, ist ein Python-Skript, das sich noch nicht zugelassen hat.

Kernpunkte

  • Die Feldaufteilung ist der Kerntrick: awk -F: '$3 >= 1000 {print $1}' /etc/passwd listet die echten Benutzer auf und -F'[,|]' verarbeitet Trennzeichen mit mehreren Zeichen, wenn Cut bereits aufgegeben hat.
  • Zählen mit assoziativen Arrays: awk '{count[$1]++} END {for (c in count) print count[c], c}' /var/log/secure verwandelt jedes Protokoll in eine Häufigkeitstabelle in einer Zeile.
  • NR und NF beantworten Dateifragen: „NR==1“ ist die Kopfzeile, „{print NF}“ zählt Spalten pro Zeile und ein Vergleich von NR mit den gespeicherten Werten einer anderen Datei findet Duplikate und Lücken.
  • Match plus Extract ist das tägliche Brot: awk '/ 500 / {print $7, $9}' access.log ruft Fehlerseiten mit URLs ab, und OFS ermöglicht es Ihnen, $0 nach der Bearbeitung eines einzelnen Felds erneut zu drucken, ohne die Zeile selbst neu schreiben zu müssen.
  • In den BEGIN- und END-Blöcken lebt die aggregierte Arbeit: BEGIN legt Trennzeichen fest, die mittleren Regeln werden pro Zeile ausgeführt, END gibt Summen aus; Drei Blöcke sind gut lesbar, fünf ist ein getarntes Drehbuch.
  • Anführungszeichen sind der wahre Feind von Shell-Einzeilern: Setzen Sie das Programm in einfache Anführungszeichen, setzen Sie Literale darin in doppelte Anführungszeichen und denken Sie daran, dass $7 innerhalb einer Shell-Zeichenfolge in doppelten Anführungszeichen niemals awk erreicht.
  • Numerische Arbeit erhält LC_ALL=C: Gebietsschema-Kommas in Zahlen und ungeraden Sortierungen drehen Vergleiche und Sortierungen seitwärts, und das Anheften des Gebietsschemas ist eine Zeile, die einen Nachmittag spart.
  • Kennen Sie die Obergrenze: Anführungszeichen in CSV, verschachteltes JSON oder zustandsbehaftete mehrzeilige Formate gehen zu Python; awk ist ein Skalpell und bleibt es auch.

Praxisnotiz

Ein awk-Einzeiler, der Dollarspalten aus einem Protokoll mit Gebietsschema-Kommas summierte, ergab Zahlen, die niemand in Frage stellte, bis die Buchhaltung den Bericht öffnete. LC_ALL=C zog in dieser Woche in unsere Alias-Bibliothek und blieb dort.

Häufige Fragen

awk oder Cut für Kolumnenarbeit?

Schnitt für ein festes Trennzeichen und eine einfache Spaltenliste; awk In dem Moment, in dem Bedingungen, Regex, Arithmetik oder Aggregate auftauchen, ist der Schnitt ohnehin überfordert.

Wie summiere oder mittele ich eine Spalte?

Aggregieren in END: awk '{s += $5} END {print s, s/NR}' addiert und mittelt Feld fünf über Zeilen hinweg; Entfernen Sie zuerst die Tausendertrennzeichen, wenn ein Gebietsschema Kommas in die Zahlen einfügt.

Warum verhält sich mein awk-Einzeiler unter macOS anders?

macOS liefert ein POSIX-awk ohne GNU-Erweiterungen wie -i inplace oder gensub; Skripte, die unter Linux ausgeführt werden, können dort stillschweigend scheitern, also behalten Sie Einzeiler im POSIX-Format bei oder führen Sie gawk mit sich.

Kann awk JSON analysieren?

Nicht sinnvoll: JSON hat keine Spaltenstruktur, die awk versteht, und Regex-Hacks scheitern bei verschachtelten Objekten. Verwenden Sie jq, die Form von awk für JSON, oder das JSON-Modul von Python, wenn der Job wächst.

Wie Kinetikatech bei linux-befehle und shell-fähigkeiten hilft

Das ist unser Tagesgeschäft: Die Befehle und Skriptgewohnheiten, die darüber entscheiden, ob ein Administrator einen Server betreibt oder ihn bekämpft: Suchen, Transformieren, Übertragen und Überwachen von Texten und Prozessen mit den Tools, die in jeder Basisinstallation enthalten sind. Unser Linux-Server-Sicherheit und Serververwaltung-Service deckt es vollständig ab: Assessment, Umsetzung, 24/7-Überwachung und Notfallreaktion innerhalb von 30 Minuten.

Mit einem Ingenieur sprechen

Serverproblem? Gehackte Website? Langsame Seite?

Kritische Störungen in 30 Minuten beantwortet — rund um die Uhr, 7 Tage die Woche.

Notfall-Support anfordern support@kinetikatech.com