So drucken Sie einen Spaltenbereich mit dem Befehl awk mit awk

So drucken Sie einen Spaltenbereich mit dem Befehl awk mit awk
Der Befehl 'awk' ist einer von vielen Befehlen, mit denen ein Spaltenbereich aus tabellarischen Daten unter Linux gedruckt werden kann. Der Befehl "awk" kann direkt vom Terminal aus dem Terminal verwendet werden, indem die Skriptdatei "awk" ausgeführt wird. In diesem Tutorial zeigen wir Ihnen, wie Sie eine Reihe von Spalten aus tabellarischen Daten drucken können.

Beispiel 1: Drucken Sie einen Spaltenbereich aus einer Befehlsausgabe aus

Der folgende Befehl druckt die zweiten, dritten und vierten Spalten aus der Befehlsausgabe aus, 'ls -l''. Hier werden die Spaltenzahlen explizit angegeben, aber im nächsten Beispiel wird ein effizienterer Befehl zum Drucken desselben Spaltenbereichs angezeigt.

$ ls -l | awk 'print $ 2, $ 3, $ 4'

Die folgende Ausgabe erzeugt den obigen Befehl.

Beispiel 2: Drucken Sie den Spaltenbereich aus einer Datei mit a für Schleife

Um diesem Beispiel und den anderen Beispielen in diesem Tutorial zu folgen, erstellen Sie eine Textdatei mit dem Namen Markierungen.txt mit dem folgenden Inhalt:

ID CSE203 CSE102 CSE202
1109 78 87 79
1167 67 81 70
1190 56 61 69
1156 89 55 78
199 54 66 58

Der folgende Befehl 'awk' druckt die ersten drei Spalten von Markierungen.txt. Der für Die Schleife wird verwendet, um die Spaltenwerte zu drucken, und die Schleife enthält drei Schritte. Der Nf Die Variable gibt die Gesamtzahl der Felder oder Spalten der Datei an.

$ Cat Marks.txt
$ awk 'für (i = 1; i<=NF-1;i++) printf $i" "; print ""' marks.txt

Die folgende Ausgabe wird erstellt, indem der Befehl ausgeführt wird. Die Ausgabe zeigt den Schüler IDS und die Markierungen für CSE203 Und CSE102.

Beispiel 3: Drucken Sie den Spaltenbereich, indem Sie Start- und Endvariablen definieren

Der folgende Befehl 'awk' druckt die ersten drei Spalten aus der Befehlsausgabe 'ls -l' durch Initialisierung der beginnend Und Ende Variablen. Hier der Wert der beginnend Variable ist 1 und der Wert der Ende Variable ist 3. Diese Variablen werden in einer für die Schleife iteriert, um die Spaltenwerte zu drucken.

$ ls -l | awk 'begin first = 1; last = 3
für (i = zuerst; i < last; i++) printf("%s ", $i) print $last '

Die folgende Ausgabe wird nach dem Ausführen des Befehls angezeigt. Die Ausgabe zeigt die ersten drei Spaltenwerte der Ausgabe 'ls -l'.

Beispiel 4: Drucken Sie einen Spaltenbereich aus einer Datei mit Formatierung aus

Der folgende Befehl 'awk' druckt die ersten drei Spalten von Markierungen.txt Verwendung printf und Ausgangsfeldabscheider (Ofs). Hier enthält die For -Loop drei Schritte, und drei Spalten werden nacheinander aus der Datei gedruckt. Ofs wird hier verwendet, um Platz zwischen den Spalten hinzuzufügen. Wenn der Zählerwert der Schleife (i) dem entspricht Ende Variable, dann wird eine neue Linie (\ n) generiert.

$ Cat Marks.txt
$ awk -v start = 1 -v end = 3 'für (i = start; i i<=end;i++) printf("%s%s",
$ i, (i == Ende) ? "\ n": OFS) 'Marks.txt

Die folgende Ausgabe wird erzeugt, nachdem die obigen Befehle ausgeführt wurden.

Beispiel 5: Drucken Sie den Spaltenbereich aus einer Datei mit einer bedingten Anweisung aus

Der folgende Befehl 'awk' druckt die ersten und letzten Spalten aus einer Datei mithilfe einer für Schleife und einer IF -Anweisung aus. Hier enthält die für Schleife vier Schritte. Der beginnend Und Ende Variablen werden im Skript verwendet, um die zweite und dritte Spalten aus der Datei unter Verwendung des IF -Zustands wegzulassen. Die OFS -Variable wird verwendet, um Platz zwischen den Spalten hinzuzufügen, und die ORS -Variable wird verwendet, um nach dem Drucken der letzten Spalte eine neue Zeile (\ n) hinzuzufügen.

$ Cat Marks.txt
$ awk -v start = 2 -v End = 3 'für (i = 1; i<=NF;i++)
if (i> = start && i<=end) continue;
sonst printf ("%s%s", $ i, (ich!= NF) ? OfS: ors) 'Marks.txt

Nach dem Ausführen der obigen Befehle wird die folgende Ausgabe angezeigt. Die Ausgabe zeigt die ersten und letzten Spalten von Noten.txt.

Beispiel 6: Drucken Sie den Spaltenbereich aus einer Datei mit der NF -Variablen aus

Der folgende Befehl 'awk' druckt die ersten und letzten Spalten aus der Datei mithilfe einer NF -Variablen aus. Es werden keine Schleifen oder bedingten Aussagen verwendet, um die Spaltenwerte zu drucken. NF gibt die Anzahl der Felder an. Es gibt vier Spalten in Markierungen.txt. $ (NF-3) definiert die erste Spalte, und $ NF gibt die letzte Spalte an.

$ Cat Marks.txt
$ awk 'print $ (NF-3) "$ nf' Marks.txt

Die folgende Ausgabe wird erstellt, indem die obigen Befehle ausgeführt werden. Die Ausgabe zeigt die ersten und letzten Spalten von Noten.txt.

Beispiel 7: Drucken Sie den Spaltenbereich aus einer Datei mit Substr () und index () aus

Die Funktion index () gibt eine Position zurück, wenn der zweite Argumentwert im ersten Argumentwert vorliegt. Die Funktion substr () kann drei Argumente erfolgen. Das erste Argument ist ein Stringwert, das zweite Argument ist die Ausgangsposition und das dritte Argument ist die Länge. Das dritte Argument von substr () wird im folgenden Befehl weggelassen. Da die Spalte im Befehl 'awk' ab 1 US -Dollar beginnt.

$ Cat Marks.txt
$ awk 'print substr ($ 0, Index ($ 0, $ 3))' Marks.txt

Die folgende Ausgabe wird erstellt, indem die obigen Befehle ausgeführt werden.

Beispiel 8: Drucken Sie nacheinander einen Spaltenbereich aus einer Datei mit PRINTF aus

Der folgende Befehl 'awk' druckt die ersten, zweiten und dritten Spalten der Markierungen.TXT, indem genug Platz für 10 Zeichen festgelegt wird.

$ Cat Marks.txt
$ awk '// printf " %10s %10s %10s \ n", $ 1, $ 3, $ 2' Marks.txt

Die folgende Ausgabe wird erstellt, indem die obigen Befehle ausgeführt werden.

Abschluss

Es gibt verschiedene Möglichkeiten, den Spaltenbereich aus der Befehlsausgabe oder einer Datei zu drucken. Dieses Tutorial zeigt, wie 'awk' den Befehl Linux helfen kann, Inhalte aus tabellarischen Daten zu drucken.