COLUMN(1)

NAZWA
column - tworzy kolumny z list

SKŁADNIA

column [opcje] [plik ...]

OPIS

Narzędzie column formatuje swoje wejście tworząc kilka kolumn. Obsługuje trzy tryby:

wypełnia kolumny przed wierszami
    Jest to domyślny tryb (wymagany ze względu na kompatybilność wsteczną).

wypełnia wiersze przed kolumnami
    Ten tryb włącza się opcją -x, --fillrows.

tworzy tabelę
    Ustala liczbę kolumn jaką zawiera wejście i tworzy tabelę. Ten tryb włącza się opcją -t/--table. Wyjście jest wyrównywane do szerokości terminala w trybie interaktywnym i do 80 kolumn w trybie nieinteraktywnym (więcej szczegółów w opisie opcji --output-width). Tabelę można dodatkowo sformatować poszczególnymi opcjami --table-*.

Wejście jest przyjmowane z pliku lub ze standardowego wejścia. Puste wiersze są ignorowane, a wszelkie nieprawidłowe sekwencje wielobajtowe są kodowane za pomocą konwencji x<hex> (liczby szesnastkowej).

OPCJE

Argument kolumny w przypadku poniższych opcji --table-* jest listą nadanych przez użytkownika nazw kolumn, rozdzielonych przecinkiem, definiowanych jako --table-columns nazwa1,nazwa2,..., lub ich indeksów, w kolejności w jakiej pojawiają się na wejściu, poczynając od 1, albo też nazw, definiowanych przez atrybut --table-column. Można mieszać nazwy i indeksy. Aby podać wszystkie kolumny można skorzystać ze specjalnego symbolu zastępczego "0" (np. -R0), a aby określić ostatnią widoczną kolumnę, można skorzystać z symbolu "-1" (np. -R -1). Przy adresowaniu kolumn indeksami, można korzystać z zakresów takich jak "1-5".

-J, --json
    Używa formatu wyjściowego JSON do wypisania tabeli. Wymagana jest opcja --table-columns, a opcja --table-name jest zalecana.

-c, --output-width szerokość
    Wyjście jest formatowane do szerokości określonej liczbą znaków. Proszę zauważyć, że wejście dłuższe niż szerokość nie jest domyślnie przycinane. Domyślna jest szerokość terminala w trybie interaktywnym lub 80 kolumn w trybie nieinteraktywnym. Nagłówki kolumn nigdy nie są przycinane.

    Aby zapobiec ograniczaniu szerokości wyjścia, można użyć symbolu zastępczego unlimited (lub 0). Zaleca się takie postępowanie przy przekierowywaniu wyjścia do pliku.

    (Pierwotna długa nazwa tej opcji brzmiała --columns; nazwa ta jest przestarzała od wersji v2.30).

-d, --table-noheadings
    Pomija wypisywanie nagłówka. Opcja pozwala na korzystanie z nazw nadanych przez użytkownika w wierszu poleceń, ale ukrywa nagłówek przy wypisywaniu tabeli.

-o, --output-separator łańcuch
    Separator kolumn w wyjściu tabeli (domyślnie to dwie spacje).

-s, --input-separator, --separator separatory
    Możliwe separatory pozycji wejściowych (domyślnie to spacja).

-S, --use-spaces liczba
    W trybie innym niż tabeli, korzysta ze spacji zamiast tabulatorów do wyrównania kolumn. Opcja określa minimalną liczbę spacji, która oddziela dwie kolumny.

-t, --table
    Ustala liczbę kolumn jaką zawiera wejście i tworzy tabelę. Kolumny są domyślnie rozdzielone spacją lub znakami podanymi opcją --output-separator. Wyjście tabelaryczne jest przydatne do ładnego drukowania (pretty-printing).

--table-colorscheme nazwa
    Określa schemat kolorów. Domyślną nazwą jest "column". Więcej szczegółów w rozdziale KOLORY.

-C, --table-column atrybuty
    Definiuje kolumnę z jej listą atrybutów (separatorem jest przecinek). Opcji można użyć wielokrotnie, każda zdefiniuje pojedynczą kolumnę. Atrybuty zastępują niektóre z opcji --table-: np. *--table-column name=FOO,right definiuje kolumnę, której tekst jest wyrównywany do prawej strony. Opcja wzajemnie wyklucza się z -N/--table-columns.

    Obsługiwane są następujące atrybuty:

    name=łańcuch
        Nazwa kolumny.

    trunc
        Przycina tekst kolumny, jeśli to konieczne. Równoważne --table-truncate. Proszę zauważyć, że nagłówek kolumny nigdy nie jest przycinany, stanowiąc minimalną szerokość kolumny

    tree
        Używa tę kolumnę w trybie drzewiastym. Więcej szczegółów w opisie opcji --tree.

    right
        Wyrównuje tekst do prawej strony. Równoważne --table-right.

    width=liczba
        Szerokość kolumny. Jest to tylko wskazówka. Aby ją wymusić, należy zdefiniować również atrybut strictwidth. Faktyczną minimalną szerokość określa szerokość nagłówka kolumny.

    strictwidth
        Ściśle przestrzega width= do określenia minimalnego rozmiaru kolumny. Kolumna może być szersza, jeśli w wyniku jest na to wystarczająco dużo miejsca.

    noextremes
        Ignoruje nadzwyczaj długą szerokość zawartości. Więcej szczegółów w opisie opcji --table-noextreme.

    hidden
        Nie wypisuje kolumny. Więcej szczegółów w opisie opcji --table-hide.

    wrap
        Pozwala na korzystanie z wielowierszowej komórki w przypadku długiego tekstu, jeśli to konieczne. Proszę zauważyć, że nagłówek nigdy nie jest zawijany i określa minimalną szerokość kolumny. Więcej szczegółów w opisie opcji --table-wrap.

    wrapnl
        Zawija na znakach nowego wiersza; znaki nowego wiersza w komórkach danych są traktowane jako przełamania wierszy.

    wrapzero
        Przełamuje na znakach zerowych (NUL) w komórkach danych.

    json=typ
        Definiuje typ kolumny w wyjściu JSON. Obsługiwanymi typami są: string (łańcuch), number (liczba), float (liczba zmiennoprzecinkowa), array-string i array-number (tablice) oraz boolean (wartość logiczna).

    color=nazwa
        Definiuje kolor kolumny w wyjściu na terminalu. Nazwa jest nazwą koloru (black, blink, blue, bold, brown, cyan, darkgray, gray, green, halfbright, lightblue, lightcyan, lightgray, lightgreen, lightmagenta, lightred, magenta, red, reset, reverse i yellow) lub liczbą/liczbami sekwencji koloru ANSI, rozdzielonych średnikiem, ale bez przedrostka "ESC[" i przyrostka "m". Na przykład "37;41" definiuje sekwencję z czerwonym tłem i białym tekstem. Więcej szczegółów w rozdziale KOLORY.

    colorkey=nazwa
        Adresuje kolor zdefiniowany w schemacie kolorów. Zob. --table-colorscheme.

    headercolor=nazwa
        Podobnie jak color=, lecz definiuje tylko kolor nagłówka.

    headercolorkey=nazwa
        Adresuje kolor nagłówka zdefiniowany w schemacie kolorów. Zob. --table-colorscheme.

-N, --table-columns nazwy
    Określa nazwy kolumn za pomocą listy (separatorem jest przecinek). Nazwy są stosowane w nagłówku tabeli oraz do wskazywania kolumn w argumentach opcji. Zob. też --table-column.

-l, --table-columns-limit liczba
    Określa maksymalną liczbę kolumn wejściowych. Ostatnia kolumna będzie zawierała wszystkie pozostałe dane, jeśli limit jest mniejszy niż liczba kolumn w danych wejściowych.

-R, --table-right kolumny
    Wyrównuje tekst do prawej strony w podanych kolumnach.

-T, --table-truncate kolumny
    Określa kolumny, w których tekst może zostać przycięty gdy to konieczne, w przeciwnym przypadku bardzo długie wpisy w tabeli mogą zajmować wiele wierszy.

-E, --table-noextreme kolumny
    Określa kolumny, w których zawartość dłuższa niż przeciętna może być zignorowana przy obliczaniu szerokości kolumny. Opcja ta wpływa na obliczanie szerokości i formatowania tabeli, natomiast nie ma wpływu na wypisywany tekst.

    Opcja ta domyślnie jest aktywowana wobec ostatniej widocznej kolumny.

-e, --table-header-repeat
    Wypisuje wiersz nagłówka na każdej stronie.

-K, --table-header-as-columns
    Używa pierwszego wiersza wejścia jako nagłówka tabeli. Opcja wyklucza się z opcjami --table-columns i --table-column.

-W, --table-wrap kolumny
    Określa kolumny, w których przy dłuższych tekstach mogą być stosowane komórki wielowierszowe. Domyślnie tekst jest zawijany zgodnie z szerokością kolumny. Za pomocą opcji --wrap-separator można w zamian zawijać na wybranym znaku. Proszę zauważyć, że nagłówek nigdy nie jest zawijany i określa minimalną szerokość kolumny.

--wrap-separator łańcuch
    Używa łańcucha jako separatora do zawijania tekstu w kolumnach, w których włączono zawijanie. Przy wyświetlaniu tekstu, separator jest zastępowany znakiem nowego wiersza. Opcja wymaga trybu tabelarycznego oraz kolumn z włączonym zawijaniem (zob. --table-wrap). Na przykład podanie "|" pozwoli na zawijanie na znakach potoku, w komórkach z danymi.

-H, --table-hide kolumny
    Nie wypisuje podanych kolumn. Specjalny symbol "-" służy do ukrycie wszystkich nienazwanych kolumn (zob. --table-columns).

-O, --table-order kolumny
    Określa kolejność kolumn wyjściowych.

-n, --table-name nazwa
    Określa nazwę tabeli, użytą w wyjściu JSON. Domyślną jest "table".

-m, --table-maxout
    Wypełnia całe dostępne miejsce na wyjściu.

-L, --keep-empty-lines
    Zachowuje wiersze składające się wyłącznie z białych znaków w wejściu. Domyślnie całkowicie puste wiersze są ignorowane. Pierwotna nazwa tej opcji brzmiała --table-empty-lines, lecz została uznana za przestarzałą, ponieważ sprawiała wrażenie, że działała tylko w trybie tabelarycznym.

-r, --tree kolumna
    Określa kolumnę do stosowania w trybie drzewiastym. Proszę zauważyć, że zapętlone zależności oraz inne problemy w relacji dziecko-rodzic są po cichu ignorowane.

-i, --tree-id kolumna
    Określa kolumnę zawierającą unikalny identyfikator dziecka każdego wiersza, dla relacji dziecko-rodzic.

-p, --tree-parent kolumna
    Określa kolumnę zawierającą identyfikator rodzica każdego wiersza, dla relacji dziecko-rodzic.

-x, --fillrows
    Wypełnia wiersze przed wypełnianiem kolumn.

--color[=kiedy]
    Koloryzuje wynik. Opcjonalnym argumentem kiedy może być auto, never (nigdy) lub always (zawsze). Gdy nie poda się argumentu kiedy, domyślnym ustawieniem jest auto. Kolory mogą być wyłączone; aktualne wbudowane ustawienie domyślne pokaże opcja --help. Zob. również rozdział KOLORY.

-h, --help
    Wyświetla ten tekst i wychodzi.

-V, --version
    Wyświetla wersję i wychodzi.

KOLORY

Kolorowanie wyjściowe zaimplementowano poprzez terminal-colors.d(5). Jawne kolorowanie można wyłączyć za pomocą pustego pliku

    /etc/terminal-colors.d/column.disable

dla polecenia column albo dla wszystkich narzędzi plikiem

    /etc/terminal-colors.d/disable

Od wersji 2.41, obsługiwana jest również zmienna środowiskowa $NO_COLOR, służąca do wyłączenia kolorowania wyjścia, o ile nie włączy się je wprost opcją wiersza poleceń.

Globalne ustawienie przesłonią $XDG_CONFIG_HOME/terminal-colors.d lub $HOME/.config/terminal-colors.d danego użytkownika.

Proszę zauważyć, że kolorowanie wyjścia może być domyślnie włączone i wówczas katalogi terminal-colors.d mogą jeszcze nie istnieć.

Domyślnym schematem kolorów jest "column," i można go przesłonić za pomocą

    --table-colorscheme nazwa

Następnie można stosować plik nazwa[.disable|enable|scheme] w /etc/terminal-colors.d/, $XDG_CONFIG_HOME/terminal-colors.d lub $HOME/.config/terminal-colors.d/.

Logiczna nazwa koloru (klucz) w schemacie kolorów może być zaadresowana przez właściwość kolumny colorkey= i headercolorkey=. Na przykład

    echo 'istotny red'           > ~/.config/terminal-colors.d/fajnatabela.scheme
    echo 'istotny-naglowek 37;41' >> ~/.config/terminal-colors.d/fajnatabela.scheme
    echo -e "a b c\naa bb cc\naaa bbb ccc" | column -t \
            --table-colorscheme=fajnatabela \
            -C name=AAA,colorkey=istotny,headercolorkey=istotny-naglowek \
            -C name=BBB,color=magenta,headercolor=cyan \
            -C name=CCC,color=green

Powyższe utworzy schemat kolorów o nazwie "fajnatabela" i pokoloruje nagłówek i dane pierwszej kolumny zgodnie z kluczami ze schematu. Pozostałe dwie kolumny będą pokolorowane za pomocą bezpośrednich nazw kolorów.

ŚRODOWISKO

COLUMNS
    służy do określenia rozmiaru ekranu, jeśli inne informacje nie są dostępne.

LIBSMARTCOLS_DEBUG=all
    włącza wyjście debugowania libsmartcols.

LIBSMARTCOLS_DEBUG_PADDING=on
    używa widocznych znaków wypełnienia.

HISTORIA

Polecenie column pojawiło się w 4.3BSD-Reno.

USTERKI

Wersja 2.23 zmieniła działanie opcji -s na niezachłanne np.:

    printf "a:b:c\n1::3\n" | column -t -s ':'

Stare wyjście:

    a  b  c
    1  3

Obecne wyjście (od util-linux 2.23):

    a  b  c
    1     3

Historyczne wersje narzędzie wskazywały, że domyślnie "wiersze są wypełniane przed kolumnami", a opcja -x to odwraca. Takie sformułowanie nie było jednak zgodne z faktycznym zachowaniem, dlatego zostało poprawione (zob. wyżej). Inne implementacje column mogą wciąż korzystać ze starszej dokumentacji, lecz ich zachowanie powinno być identyczne.

PRZYKŁADY

Wypisuje fstab z wierszem nagłówka oraz wyrównuje liczby do prawej strony:

    sed 's/#.*//' /etc/fstab | column --table --table-columns SOURCE,TARGET,TYPE,OPTIONS,FREQ,PASS --table-right FREQ,PASS

Wypisuje fstab i ukrywa nienazwane kolumny:

    sed 's/#.*//' /etc/fstab | column --table --table-columns SOURCE,TARGET,TYPE --table-hide -

Wypisuje drzewo:

    echo -e '1 0 A\n2 1 AA\n3 1 AB\n4 2 AAA\n5 2 AAB' | column --tree-id 1 --tree-parent 2 --tree 3
    1  0  A
    2  1  |-AA
    4  2  | |-AAA
    5  2  | `-AAB
    3  1  `-AB

Wypisuje tabelę z podanym separatorem zawijania:

    echo -e 'Nazwa:Opis\nJan:twórca|oprogramowania\nJanina:analityk|danych' | column --table --separator ':' --table-wrap 2 --wrap-separator '|'
    Nazwa  Opis
    Jan    twórca
           oprogramowania
    Janina analityk
           danych

ZOBACZ TAKŻE

colrm(1), ls(1), paste(1), sort(1)

ZGŁASZANIE BŁĘDÓW

Problemy należy zgłaszać w

DOSTĘPNOŚĆ

Polecenie column jest częścią pakietu util-linux, który można pobrać ze strony