[Linux] Einfache Verwendung des awk-Befehls

Einführung

Awk ist ein leistungsstarkes Textverarbeitungstool, das vom GNU-Projekt entwickelt wurde. Es wird hauptsächlich verwendet, um Eingaben (normalerweise eine Textdatei) zu lesen, jede Zeile gemäß bestimmten Bedingungen abzugleichen und dann bestimmte Operationen an den übereinstimmenden Zeilen auszuführen.

Grundlegende Verwendung

awkDie grundlegende Verwendung ist wie folgt:

# 格式
$ awk 动作 文件名

# 示例
$ awk '{print $0}' demo.txt

Im obigen Beispiel demo.txthandelt es sich um awkdie zu verarbeitende Textdatei. Innerhalb des vorherigen einfachen Anführungszeichens befindet sich eine geschweifte Klammer, die die Verarbeitungsaktion für jede Zeile enthält print $0. Darunter printbefindet sich der Druckbefehl, $0der die aktuelle Zeile darstellt. Daher besteht das Ausführungsergebnis des obigen Befehls darin, jede Zeile so auszudrucken, wie sie ist.

Als nächstes verwenden wir zunächst die Standardeingabe (stdin), um das obige Beispiel zu demonstrieren.

$ echo 'this is a test' | awk '{print $0}'
this is a test

Im obigen Code print $0wird die Standardeingabe this is a testerneut gedruckt.

awkJede Zeile wird anhand von Leerzeichen und Tabulatoren in mehrere Felder unterteilt, wobei $1, $2, $3zur Darstellung des ersten Felds, des zweiten Felds, des dritten Felds usw. verwendet werden.

$ echo 'this is a test' | awk '{print $3}'
a

$3Stellt im obigen Code this is a testdas dritte Feld dar a.

Im Folgenden /etc/passwdspeichern wir die Datei beispielsweise als demo.txt.

root:x:0:0:root:/root:/usr/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync

Das Feldtrennzeichen dieser Datei ist Doppelpunkt ( :), daher müssen Sie den Parameter verwenden -F, um das Trennzeichen als Doppelpunkt anzugeben. Anschließend kann das erste Feld extrahiert werden.

$ awk -F ':' '{ print $1 }' demo.txt
root
daemon
bin
sys
sync

Variable

Neben $ + Zahlen, die ein Feld darstellen, awkwerden auch eine Reihe anderer Variablen bereitgestellt.
Die Variable NFgibt an, wie viele Felder es in der aktuellen Zeile gibt, $NFsie stellt also das letzte Feld dar.

$ echo 'this is a test' | awk '{print $NF}'
test

$(NF-1)Stellt das vorletzte Feld dar.

$ awk -F ':' '{print $1, $(NF-1)}' demo.txt
root /root
daemon /usr/sbin
bin /bin
sys /dev
sync /bin

Im obigen Code printbedeutet das Komma im Befehl, dass bei der Ausgabe ein Leerzeichen verwendet wird, um die beiden Teile zu trennen.

Die Variable NRgibt an, welche Zeile gerade verarbeitet wird.

$ awk -F ':' '{print NR ") " $1}' demo.txt
1) root
2) daemon
3) bin
4) sys
5) sync

Wenn im obigen Code printim Befehl die Zeichen so ausgegeben werden, wie sie sind, müssen sie in doppelte Anführungszeichen gesetzt werden.

awkDie anderen integrierten Variablen lauten wie folgt.

FILENAME:当前文件名
FS:字段分隔符,默认是空格和制表符。
RS:行分隔符,用于分割每一行,默认是换行符。
OFS:输出字段的分隔符,用于打印时分隔字段,默认为空格。
ORS:输出记录的分隔符,用于打印时分隔记录,默认为换行符。
OFMT:数字输出的格式,默认为%.6g。

Ich denke du magst

Origin blog.csdn.net/u011308433/article/details/132902948
Empfohlen
Rangfolge