9.3 colrm – Spalten entfernen
Haben Sie mit column soeben gelernt, wie Ausgaben tabellenartig dargestellt werden können, so lernen Sie nun, wie mit colrm einzelne Spalten von Texten entfernt werden können. Obwohl dieses Programm seit Urzeiten zu BSD und auch zum Standardumfang eines Linux-Systems gehört, ist es recht unbekannt – ein Grund mehr, es in diesem Buch zu besprechen.
Eingelesen werden Daten immer über die Standardausgabe; sie werden dabei automatisch als in Spalten aufgeteilter Text interpretiert. Für colrm sind Spalten keine durch Leerzeichen oder Tabulatoren getrennten Bereiche. Stattdessen bildet jedes Zeichen eine neue Spalte. Ein Dateiinhalt wie etwa »abcd« besteht somit aus vier Spalten. Ein Tabulatorzeichen setzt die Spaltennummer für das darauf folgende Zeichen auf das nächsthöhere Vielfache von acht (also genauso, wie es ein Texteditor üblicherweiseauf dem Bildschirm darstellt, wenn Sie ein Zeichen mit dem Tabulator verschieben).
Als Parameter übergeben Sie colrm in jedem Fall die Spaltennummer, ab der gelöscht werden soll. Ein optionaler zweiter Parameter dient zur Angabe der Spalte, ab der nicht weiter gelöscht werden soll. Wie so oft ist auch hier ein Beispiel angebracht.
Listing 9.6 Spalten abschneiden mit colrm
$ cat testfile
abcdefg
ABCDEFG
QWERTZX
$ cat testfile | colrm 3
ab
AB
QW
$ cat testfile | colrm 3 6
abg
ABG
QWX
Um nur eine einzelne Spalte zu entfernen, können Sie als Start- und Stoppspalte denselben Wert angeben:
Listing 9.7 Nur die dritte Spalte einer Eingabe löschen
$ cat testfile | colrm 3 3
abdefg
ABDEFG
QWRTZX
Sollten Sie mehrere einzelne Spalten löschen wollen, dann müssen Sie colrm mehrfach aufrufen. Bedenken Sie dann allerdings, dass sich die Zeichennummerierungen durch die vorhergehende Manipulation bereits verändert haben. Wenn Sie z. B. von sechs Eingabespalten zunächst die zweite und dann die fünfte löschen wollen, müssen Sie colrm erst die zweite und anschließend die vierte (und nicht die fünfte) löschen lassen, da es nach dem Löschen der zweiten Spalte nur noch vier Spalten in der neuen Eingabe gibt. Fehlerfreier ist da die Lösung von »hinten«. Das heißt: Sie löschen erst die fünfte Spalte und dann die zweite, müssen also nicht rechnen. Das folgende Listing zeigt beide Fälle:
Listing 9.8 Die zweite und die fünfte Spalte löschen
$ echo "123456" | colrm 2 2 | colrm 4 4
1346
$ echo "123456" | colrm 5 5 | colrm 2 2
1346
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.