So drucken Sie einen Spaltenbereich mit dem Befehl `awk`

How Print Range Columns Using Awk Command



Der Befehl `awk` ist einer von vielen Befehlen, die verwendet werden können, um unter Linux eine Reihe von Spalten aus Tabellendaten zu drucken. Der Befehl `awk` kann direkt vom Terminal aus verwendet werden, indem die Skriptdatei `awk` ausgeführt wird. In diesem Tutorial zeigen wir Ihnen, wie Sie einen Spaltenbereich aus Tabellendaten drucken.

Beispiel 1: Einen Spaltenbereich aus einer Befehlsausgabe drucken

Der folgende Befehl gibt die zweite, dritte und vierte Spalte der Befehlsausgabe aus: 'Ls -l ‘. Hier werden die Spaltennummern explizit angegeben, aber ein effizienterer Befehl zum Drucken des gleichen Spaltenbereichs wird im nächsten Beispiel gezeigt.







$ls -das | awk '{ drucken $2, $3, $4 }'

Die folgende Ausgabe wird durch den obigen Befehl erzeugt.





Beispiel 2: Drucken Sie den Spaltenbereich aus einer Datei mit a zum Schleife

Um diesem Beispiel und den anderen Beispielen in diesem Tutorial zu folgen, erstellen Sie eine Textdatei mit dem Namen mark.txt mit folgendem 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 `awk`-Befehl gibt die ersten drei Spalten von marks.txt aus. Die zum Schleife wird verwendet, um die Spaltenwerte zu drucken, und die Schleife umfasst drei Schritte. Die NF Variable gibt die Gesamtanzahl der Felder oder Spalten der Datei an.

$Katzemark.txt
$awk '{für(i=1;i<=NF-1;i++) printf $i' '; print ''}'mark.txt

Die folgende Ausgabe wird durch Ausführen des Befehls erzeugt. Die Ausgabe zeigt dem Schüler IDs und die Markierungen für CSE203 und CSE102 .



Beispiel 3: Drucken des Spaltenbereichs durch Definieren von Start- und Endvariablen

Der folgende `awk`-Befehl gibt die ersten drei Spalten der Befehlsausgabe 'ls -l' aus, indem er den beginnend und Ende Variablen. Hier ist der Wert des beginnend Variable ist 1, und der Wert der Ende Variable ist 3. Diese Variablen werden in einer for-Schleife wiederholt, um die Spaltenwerte zu drucken.

$ls -das | awk ' BEGIN { zuerst = 1; letzte = 3 }
{ für (i = zuerst; i

Die folgende Ausgabe wird angezeigt, nachdem der Befehl ausgeführt wurde. Die Ausgabe zeigt die ersten drei Spaltenwerte der Ausgabe, ‚ls -l‘.

Beispiel 4: Drucken eines Spaltenbereichs aus einer Datei mit Formatierung

Der folgende `awk`-Befehl druckt die ersten drei Spalten von mark.txt mit druckenf und Ausgabefeldtrennzeichen ( OFS ). Hier umfasst die for-Schleife drei Schritte, und drei Spalten werden nacheinander aus der Datei gedruckt. OFS wird hier verwendet, um Leerzeichen zwischen den Spalten hinzuzufügen. Wenn der Zählerwert der Schleife (i) gleich dem Ende Variable, dann wird ein Zeilenumbruch( ) generiert.

$Katzemark.txt
$awk -v Anfang=1 -v Ende=3 '{ for (i=start; i<=end;i++) printf('%s%s',
$i,(i==Ende) ? ' ' : OFS) }'
mark.txt

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

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

Der folgende `awk`-Befehl gibt die erste und letzte Spalte einer Datei aus, indem er eine for-Schleife und eine if-Anweisung verwendet. Hier umfasst die for-Schleife vier Schritte. Die beginnend und Ende Variablen werden im Skript verwendet, um mithilfe der if-Bedingung die zweite und dritte Spalte aus der Datei auszulassen. Die OFS-Variable wird verwendet, um Leerzeichen zwischen den Spalten hinzuzufügen, und die ORS-Variable wird verwendet, um einen Zeilenumbruch( ) nach dem Drucken der letzten Spalte hinzuzufügen.

$Katzemark.txt
$awk -v Anfang=2 -v Ende=3 '{ für (i=1; ich<=NF;i++)
if( i>=start && i<=end) continue;
else printf('%s%s', $i,(i!=NF) ? OFS : ORS) }'
mark.txt

Die folgende Ausgabe wird angezeigt, nachdem die obigen Befehle ausgeführt wurden. Die Ausgabe zeigt die erste und letzte Spalte von marks.txt.

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

Der folgende `awk`-Befehl druckt die erste und letzte Spalte aus der Datei unter Verwendung einer NF-Variablen. Zum Drucken der Spaltenwerte werden keine Schleifen oder bedingten Anweisungen verwendet. NF gibt die Anzahl der Felder an. Es gibt vier Spalten in der marks.txt. $(NF-3) definiert die erste Spalte und $NF gibt die letzte Spalte an.

$Katzemark.txt
$awk '{print $(NF-3)' '$NF}'mark.txt

Die folgende Ausgabe wird durch Ausführen der obigen Befehle erzeugt. Die Ausgabe zeigt die erste und letzte Spalte von marks.txt.

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

Die Funktion index() gibt eine Position zurück, wenn der zweite Argumentwert im ersten Argumentwert vorhanden ist. Die Funktion substr() kann drei Argumente annehmen. Das erste Argument ist ein Zeichenfolgenwert, das zweite Argument ist die Startposition und das dritte Argument ist die Länge. Das dritte Argument von substr() wird im folgenden Befehl weggelassen. Da die Spalte im `awk`-Befehl bei $1 beginnt, gibt die index()-Funktion $3 zurück und der Befehl druckt von $3 bis $4.

$Katzemark.txt
$awk '{print substr($0,index($0,$3))}'mark.txt

Die folgende Ausgabe wird durch Ausführen der obigen Befehle erzeugt.

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

Der folgende `awk`-Befehl druckt die erste, zweite und dritte Spalte von marks.txt, indem genügend Platz für 10 Zeichen gesetzt wird.

$Katzemark.txt
$awk '//{printf '%10s %10s %10s ',$1,$3,$2 }'mark.txt

Die folgende Ausgabe wird durch Ausführen der obigen Befehle erzeugt.

Abschluss

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