2012-08-26 12 views
14

Próbuję sformatować listę wpisów w bashu i używam komendy column. Jednak opcja -t domyślnie używa dowolnego odstępu jako separatora, który nie działa dla posiadanych danych (zawiera spacje i tabulatory). Nie mogę się dowiedzieć, jak uzyskać flagę -s, aby określić znak nowego wiersza jako jedyny ogranicznik kolumny.Formatowanie list za pomocą polecenia column w * nix

+2

można po kilka próbek wejście i wyjście? –

+0

Należy zauważyć, że 'kolumna' jest dostępna w systemie Linux (i na Mac OS X 10.7.4). To niekoniecznie jest dostępne w innych wariantach Uniksa; na przykład nie jest standaryzowany przez POSIX. –

+3

Jeśli chcesz 3 kolumny wyjściowe, 'pr -l 1 -t -3' bardzo zbliży się do tego, co chcesz, aby' column' wytworzyć. Dla N kolumn, zmień 3 na N; aby określić szerokość, dodaj '-w 120' lub cokolwiek innego. –

Odpowiedz

13

Teoretycznie, aby określić nową linię, można użyć notacji $'...', który jest podobnie jak '...' wyjątkiem, że obsługuje stylu C Escape-sekwencje:

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

Jednak ja naprawdę nie rozumiem Celem tego. Nowej linii jest separator rzędzie tak kolumny Delimiter $'\n' odpowiada nie mając kolumnowej separatora w ogóle:

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

co oznacza, że ​​wejście będą traktowane jako posiadające tylko jedną kolumnę; więc jest to odpowiednik nie używając column w ogóle:

cat list-of-entries.txt 

Wydaje się, że rzeczywiście nie chcesz użyć flagi -t, ponieważ celem flaga -t jest zapewnienie, że każdy wiersz wejścia staje jedna linia wyjścia i nie brzmi tak, jak tego chcesz. Zgaduję, chcesz to:

column list-of-entries.txt 

która będzie traktować każdą linię list-of-entries.txt jako wartość należy umieścić w jednej komórce tabeli tej column wyjść.

+0

Świetne wyjaśnienie z pełnym zrozumieniem prawdziwego problemu napotkanego przez pytającego! – YaOzI

+0

Uderzasz to w głowę! Dzięki za wspaniałe wyjaśnienie! –

6

Działa to na wyjściu ładny wersji wydrukowanej karcie rozdzielany plik

column -t -s $'\t' list-of-entries.txt 
Powiązane problemy