Bash-Befehl awk Spickzettel

Bash-Befehl awk Spickzettel

Ein Spickzettel für den awk-Befehl, der in der Bash-Befehlszeilensprache unter Linux läuft. Stellt alles vor, von einfachen Referenzen bis zu fortgeschrittenen Themen wie externer Befehlsausführung.

Shou Arisaka
3 Min. Lesezeit
23. Nov. 2025

Ein Spickzettel für den awk-Befehl, der in der Bash-Befehlszeilensprache unter Linux läuft. Stellt alles vor, von einfachen Referenzen bis zu fortgeschrittenen Themen wie externer Befehlsausführung.

Beachten Sie, dass die Konzepte von Datensätzen und Spalten dieselben sind wie in Excel-Tabellen.

  • Datensatz … Zeile. Von oben nach unten
  • Spalte … Spalte. Von links nach rechts

Beachten Sie, dass awk die folgenden vorbereiteten Variablen hat:

  • FS Trennzeichen (Standard ist Leerzeichen)
  • NF Gesamtzahl der Spalten
  • NR Gesamtzahl der Datensätze
  • $1 erste Spalte
  • $2 zweite Spalte

Zeilen ausgeben, die mit grep -E mit Regex übereinstimmen

Das Folgende ist ein Beispiel für die Ausgabe von Zeilen, die mit einem Regex mit grep -E übereinstimmen.

awk '/regex/'

Zeilen ausgeben, bei denen die erste Spalte mit Regex übereinstimmt

Das folgende Beispiel gibt Zeilen aus, bei denen die erste Spalte mit dem Regex übereinstimmt.

awk '{if ($1 ~ /regex/){print $1,$2,$3,$4}}'

Das Folgende gibt Zeilen aus, bei denen die erste Spalte mit dem Regex übereinstimmt, aus der Ausgabe des df-Befehls.

df | awk '{if ($1 ~ /\w{1,2}:/){print $1,$2,$3}}'

Python ausführen / Externe Befehle ausführen

Das Folgende ist ein Beispiel für die Multiplikation des Werts in der vierten Spalte mit 100 unter Verwendung von Python.

awk '{"python -c \"print("$4"*100)\" | perl -pe 'chomp'" |& getline $11 ; print "The 4th column was being x100:"$11 }}'

Das folgende Beispiel multipliziert den Wert in der vierten Spalte mit 100 unter Verwendung von Python.

$ df 2>/dev/null | tail -3
E:             2930133932  381876300 2548257632  14% /mnt/e
G:             2930133932 1545875952 1384257980  53% /mnt/g
H:             2930134012 2625853000  304281012  90% /mnt/h

$ df 2>/dev/null | tail -3 | awk '{if ($1 ~ /\w{1}:/){"python -c \"print("$4"/1000/1000)\" | perl -pe 'chomp'" |& getline $11 ; print $1,$11"(GB)",$5,$6}}'
E: 2548(GB) 14% /mnt/e
G: 1384(GB) 53% /mnt/g
H: 304(GB) 90% /mnt/h

Wichtige Punkte hier:

  • Beim Übergeben von $1 usw. als Argumente an Befehle nicht in "" einschließen.
  • Die meisten Ausgaben enthalten \n Zeilenumbruch, also mit perl usw. chomp verwenden.
  • Mit |& getline $11 können Sie die Befehlsausgabe $11 zuweisen. Ohne dies wird es als $0 (?) verarbeitet, und die Ausgabe wird am Anfang der Spalten als 0. Spalte eingefügt.
  • Bei der Zuweisungsverarbeitung kann system() nicht (?) verwendet werden

awk - Assigning system command’s output to variable - Stack Overflow

Alle übereinstimmenden Prozesse beenden

Der folgende Befehl beendet Prozesse, die npm enthalten, und gibt das Ausführungsergebnis aus.

ps aux | grep "npm" | awk '{"kill -9 "$2 |& getline $11 ; print $11}'

Das Folgende ist funktionalisiert:

# killp(){
#     ps aux | grep "$1" | awk '{"kill -9 "\\$2 |& getline \\$11 ; print \\$11}'
# }
killp(){
    ps aux | grep "$1" | awk '{"kill -9 "$2 |& getline $11 ; print $11}'
}

Alle übereinstimmenden Hintergrundprozesse beenden

Der folgende Befehl beendet diejenigen, die webpack-dev enthalten.

ps S | awk '/webpack-dev/' | awk '{"kill -9 "$1 |& getline $11 ; print $11}'

Bitte beziehen Sie sich auch auf diese:

Diesen Artikel teilen

Shou Arisaka 23. Nov. 2025

🔗 Links kopieren