![5 am häufigsten verwendete Open-Source-Shells für Linux](/f/b98cad7716283463a7f1d393ee464612.png?width=100&height=100)
In diesem Teil unserer Linux Awk-Befehlsserie, werden wir uns eines der wichtigsten Features von. ansehen Awk, die Feldbearbeitung ist.
Das ist gut zu wissen Awk teilt ihm bereitgestellte Eingabezeilen automatisch in Felder auf, und ein Feld kann als eine Reihe von Zeichen definiert werden, die durch ein internes Feldtrennzeichen von anderen Feldern getrennt sind.
Wenn Sie mit Unix/Linux vertraut sind oder Bash-Shell-Programmierung, dann sollten Sie wissen, welches interne Feldtrennzeichen (IFS) variabel ist. Die Standard-IFS in Awk sind Tabulator und Leerzeichen.
So funktioniert die Idee der Feldtrennung in Awk: Wenn es auf eine Eingabezeile trifft, ist der erste Satz von Zeichen gemäß dem definierten IFS Feld eins, auf das mit. zugegriffen wird $1, der zweite Zeichensatz ist Feld zwei, auf das mit. zugegriffen wird $2, der dritte Zeichensatz ist Feld drei, auf das mit zugegriffen wird $3 und so weiter bis zum letzten Zeichensatz.
Um diese Awk-Feldbearbeitung besser zu verstehen, sehen wir uns die folgenden Beispiele an:
Beispiel 1: Ich habe eine Textdatei namens. erstellt tecmintinfo.txt.
# vi tecmintinfo.txt. # Katze tecmintinfo.txt.
Dann versuche ich von der Befehlszeile aus, die zu drucken erste, zweite und dritte Felder aus der Datei tecmintinfo.txt mit dem folgenden Befehl:
$ awk '//{print $1 $2 $3 }' tecmintinfo.txt TecMint.comisthe.
Aus der obigen Ausgabe können Sie sehen, dass die Zeichen aus den ersten drei Feldern basierend auf dem gedruckt werden IFS definiert, was Raum ist:
$1
.$2
.$3
.Wenn Sie bei der Druckausgabe bemerkt haben, werden die Feldwerte nicht getrennt und so verhält sich print standardmäßig.
Um die Ausgabe klar mit Leerzeichen zwischen den Feldwerten anzuzeigen, müssen Sie Folgendes hinzufügen: (,)
Betreiber wie folgt:
$ awk '//{print $1, $2, $3; }' tecmintinfo.txt TecMint.com ist die.
Eine wichtige Sache, die Sie beachten sollten, ist, dass die Verwendung von ($)
In Awk unterscheidet sich von seiner Verwendung beim Shell-Scripting.
Unter Shell-Skripting ($)
wird verwendet, um auf den Wert von Variablen zuzugreifen, während in Awk($)
Sie wird nur beim Zugriff auf den Inhalt eines Felds verwendet, nicht jedoch beim Zugriff auf den Wert von Variablen.
Beispiel 2: Sehen wir uns ein weiteres Beispiel an, in dem eine Datei verwendet wird, die mehrere Zeilen namens. enthält my_shoping.list.
Nein Item_Name Unit_Price Menge Preis. 1 Maus # 20.000 1 # 20.000. 2 Überwachen Sie #500.000 1 #500.000. 3 RAM_Chips #150.000 2 #300.000. 4 Ethernet_Kabel #30.000 4 #120.000
Sag, du wolltest nur drucken Einzelpreis
für jeden Artikel auf der Einkaufsliste müssen Sie den folgenden Befehl ausführen:
$ awk '//{print $2, $3 }' my_shopping.txt Artikelname Einheitspreis. Maus # 20.000. Überwachen Sie #500.000. RAM_Chips #150.000. Ethernet_Kabel #30.000.
Awk hat auch ein druckenf
Befehl, der Ihnen hilft, Ihre Ausgabe zu formatieren, ist eine gute Möglichkeit, da Sie sehen, dass die obige Ausgabe nicht klar genug ist.
Verwenden von druckenf
um die Ausgabe des zu formatieren Artikelname und Einzelpreis:
$ awk '//{printf "%-10s %s\n",$2, $3 }' my_shopping.txt Artikelname Einheitspreis. Maus # 20.000. Überwachen Sie #500.000. RAM_Chips #150.000. Ethernet_Kabel #30.000.
Feldbearbeitung ist sehr wichtig bei der Verwendung Awk um Text oder Zeichenfolgen zu filtern, hilft es Ihnen, bestimmte Daten in Spalten einer Liste zu erhalten. Und denken Sie immer daran, dass die Verwendung von ($)
Betreiber in Awk unterscheidet sich von der beim Shell-Scripting.
Ich hoffe, der Artikel war hilfreich für Sie und für zusätzliche Informationen oder Fragen können Sie einen Kommentar im Kommentarbereich posten.