So verwenden Sie awk, um Felder und Spalten in der Datei zu drucken

So verwenden Sie awk, um Felder und Spalten in der Datei zu drucken

In diesem Teil unserer Linux AWK -Befehlsreihe werden wir uns eine der wichtigsten Merkmale von ansehen Awk, Das ist Feldbearbeitung.

Es ist gut zu wissen Awk Teilen Sie automatisch Eingangsleitungen in Felder auf, und ein Feld kann als eine Reihe von Zeichen definiert werden, die durch einen internen Feldabscheider von anderen Feldern getrennt sind.

Awk Druckfelder und Spalten

Wenn Sie mit der UNIX/Linux oder der Bash -Shell -Programmierung vertraut sind, sollten Sie wissen, welches interne Feldtrennzeichen (Ifs) Variable ist. Die Standard -IFs in awk sind Registerkarte und Speicherplatz.

So funktioniert die Idee der Feldtrennung in Awk: Wenn es auf eine Eingangslinie stößt, ist gemäß den definierten IFs der erste Zeichen von Zeichen ein Feld, auf das mit Verwendung zugegriffen wird $ 1, Der zweite Zeichen von Zeichen ist Feld zwei, auf das mit Verwendung zugegriffen wird $ 2, Der dritte Zeichen von Zeichen ist Feld drei, auf das mit Verwendung zugegriffen wird $ 3 und so weiter bis zum letzten Satz von Charakteren (en).

Um diese AWK -Feldbearbeitung besser zu verstehen, werfen wir einen Blick auf die folgenden Beispiele:

Beispiel 1: Ich habe eine Textdatei mit dem Namen erstellt Tecmintinfo.txt.

# vi tecmintinfo.txt # cat tecmintinfo.txt 
Datei in Linux erstellen

Dann versuche ich aus der Befehlszeile, die zu drucken Erste, zweite Und dritte Felder aus der Datei Tecmintinfo.txt Verwenden Sie den folgenden Befehl:

$ awk '// drucken $ 1 $ 2 $ 3' tecmintinfo.txt Tecmint.comisthe 

Aus der obigen Ausgabe können Sie feststellen, dass die Zeichen der ersten drei Felder basierend auf dem gedruckt werden Ifs definiert, welcher Raum ist:

  1. Field One, das ist „Tecmint.com ” wird mithilfe von zugegriffen $ 1.
  2. Feld zwei, was ist "Ist" wird mithilfe von zugegriffen $ 2.
  3. Feld drei, was ist "Die" wird mithilfe von zugegriffen $ 3.

Wenn Sie in der gedruckten Ausgabe bemerkt haben, sind die Feldwerte nicht getrennt und so verhält sich der Druck standardmäßig.

Um die Ausgabe klar mit dem Speicherplatz zwischen den Feldwerten anzuzeigen, müssen Sie hinzufügen (,) Bediener wie folgt:

$ awk '// print $ 1, $ 2, $ 3;  'tecmintinfo.txt Tecmint.com ist das 

Eine wichtige Sache zu beachten und immer daran zu erinnern, dass die Verwendung von ($) In Awk unterscheidet sich von seiner Verwendung in Shell -Skripting.

Unter Shell Scripting ($) wird verwendet, um auf den Wert von Variablen zuzugreifen, während er in Awk ($) Es wird nur verwendet, wenn Sie auf den Inhalt eines Feldes zugreifen, jedoch nicht für den Zugriff auf den Wert von Variablen.

Beispiel 2: Schauen wir uns ein weiteres Beispiel mit einer Datei an, die mehrere Zeilen aufgerufen hat my_shoping.Liste.

NO item_name Unit_price Mengenpreis 1 Maus #20.000 1 #20.000 2 Monitor #500.000 1 #500.000 3 Ram_chips #150.000 2 #300.000 4 Ethernet_Cables #30.000 4 #120.000 

Sagen Sie, Sie wollten nur drucken Einzelpreis Von jedem Artikel auf der Einkaufsliste müssen Sie den folgenden Befehl ausführen:

$ awk '// print $ 2, $ 3' my_shoping.txt  Item_name unit_price Maus #20.000 Monitor #500.000 Ram_chips #150.000 Ethernet_Cables #30.000 

Awk hat auch a printf Befehl, mit dem Sie Ihre Ausgabe formatieren können, ist ein guter Weg, da Sie sehen können, dass die obige Ausgabe nicht klar genug ist.

Verwendung printf Ausgabe des Ausgangs der Artikelname Und Einzelpreis:

$ awk '// printf " %-10s %s \ n", $ 2, $ 3' my_shoping.txt Item_name unit_price Maus #20.000 Monitor #500.000 Ram_chips #150.000 Ethernet_Cables #30.000 

Zusammenfassung

Die Feldbearbeitung ist bei der Verwendung sehr wichtig Awk Um Text oder Zeichenfolgen zu filtern, können Sie bestimmte Daten in Spalten in einer Liste abrufen. Und denken Sie immer daran, dass die Verwendung von ($) Bediener in Awk unterscheidet sich von dem in Shell -Skripten.

Ich hoffe, der Artikel war für Sie hilfreich und für zusätzliche erforderliche Informationen oder Fragen können Sie einen Kommentar im Kommentarbereich veröffentlichen.