2012-08-26 3 views
14

Ich versuche, eine Liste von Einträgen in bash zu formatieren, und verwende den column Befehl. Die Option -t verwendet jedoch standardmäßig alle Leerzeichen als Trennzeichen, was für die Daten, die ich habe, nicht funktioniert (sie enthält Leerzeichen und Tabulatoren). Ich kann nicht herausfinden, wie man das -s Flag erhält, um ein Newline-Zeichen als das einzige Spaltentrennzeichen zu spezifizieren.Formatieren von Listen mit dem Spaltenbefehl in * nix

+2

können Sie einige Beispiel-Input & Output posten? –

+0

Beachten Sie, dass 'Spalte' unter Linux (und unter Mac OS X 10.7.4) verfügbar ist. Es ist nicht unbedingt für andere Unix-Varianten verfügbar. Es ist beispielsweise nicht von POSIX standardisiert. –

+3

Wenn Sie 3 Spalten der Ausgabe wünschen, wird 'pr -l 1 -t -3' sehr nahe an dem, was Sie' column' erzeugen wollten. Ändern Sie für N Spalten die 3 in N; Um eine Breite anzugeben, fügen Sie "-w 120" oder was auch immer hinzu. –

Antwort

13

In der Theorie eine neue Zeile zu spezifizieren, können Sie die $'...' Notation verwenden können, die wie nur '...' ist, außer dass es unterstützt C-Stil Escape-Sequenzen:

column -t -s $'\n' list-of-entries.txt 

Aber ich verstehe nicht wirklich, Der Zweck davon. Ein Neue-Zeile ist die Zeilentrennzeichen, so dass eine säulen delimiter von $'\n' entspricht überhaupt keine Spaltentrennzeichen aufweist:

column -t -s '' list-of-entries.txt 

was bedeutet, dass der Eingang als mit nur einer Säule behandelt wird; so ist es entspricht nicht column überhaupt mit:

cat list-of-entries.txt 

Es scheint, wie Sie eigentlich nicht wollen die -t Flagge verwenden, da der Zweck der -t Flagge, um sicherzustellen, dass jede Zeile der Eingabe wird eine Zeile der Ausgabe, und es klingt nicht wie das ist, was Sie wollen. Ich schätze, dass Sie dies wünschen:

column list-of-entries.txt 

, die jede Zeile von list-of-entries.txt als Wert behandeln, dass column Ausgänge in einer Zelle der Tabelle gesetzt werden.

+0

Große Erklärung mit dem vollen Verständnis des wirklichen Problems, das der Fragesteller antraf! – YaOzI

+0

Sie treffen es direkt auf den Kopf! Danke für die tolle Erklärung! –

6

Das funktioniert ziemlich Druckversion einer Registerkarte Ausgabedatei begrenzt

column -t -s $'\t' list-of-entries.txt