Ich möchte den Unix- column
Befehl zum Formatieren von Text verwenden. Ich habe Felder, die durch Tabulatoren getrennt sind, aber in jedem Feld gibt es auch Leerzeichen. column
Begrenzungen für Leerzeichen (Tabulatoren und Leerzeichen). Wie kann ich festlegen, dass Spalten nur Tabulatoren als Trennzeichen verwenden?
Ich habe versucht, tab als Trennzeichen anzugeben, indem ich Folgendes verwendet habe:
cat myfile | column -t -s"\t"
quelle
column -t -s $'\t'
als Bash'\t'
meinte ich beides\
undt
, meinte aber$'\t'
eine wörtliche Registerkarte. Bash stinkt$'\t'
Tabulator wird zum Begrenzer. Aber ich bin mir ziemlich sicher, dass ichawk -F "\t"
einen Tabulator als Begrenzer für awk verwende. Warum funktioniert das und nicht hier für Kolumnen?Ich habe folgendes verwendet (funktioniert nur, wenn Ihr Text nichts enthält
|
):Dies ersetzt nur Tabulatoren durch Pipes und verwendet dann Spalten mit Pipes als Begrenzer.
(Ich habe das getan, weil ich in Stéphanes Antwort nichts gesehen habe, was in der Fischschale sofort funktioniert hätte. Ansonsten scheint Stéphanes Antwort gut zu sein.)
quelle
Für POSIX,
$'...'
das als ANSI-C-Escape bezeichnet wird, ist es nicht definiert.Stattdessen können Sie Folgendes verwenden
$(printf '\t')
:$(printf '\011')
kann verwendet werden, da011
(oktale Darstellung von Dezimal 9) der ANSI-Code für ein horizontales Tabulatorzeichen ist:Lesen Sie jedoch den Kommentar von Stéphane Chazelas, warum dies in allen Shell-Versionen möglicherweise nicht konsistent ist.
quelle
"$(printf '\t')"
in meiner Antwort zu vermeiden . Beachten Sie, dass$'...'
die Aufnahme in die nächste Hauptversion der POSIX-Spezifikation geplant ist.$(printf '\t')
POSIX? Danke!Mit können
-t
Sie die Anzahl der gewünschten Spalten auswählen. Wenn Sie dieses Feld leer lassen, ändert sich nichts. Außerdem möchten Sie nach dem Leerzeichen-s
Folgendes ausprobieren:cat myfile | column -s \t
quelle
column
Zeilen vor Spalten gefüllt. Sie könnten interessiert sein anpr