名前

column - 入力を複数列に整形する

書式

column [options] [file ...]

説明

column ユーティリティーは入力を複数列形式に整形する。 このユーティリティーは 3 つのモードをサポートしている。

行 (row) より先に列 (column) を埋める

これがデフォルトのモードである (後方互換のためそうなっている)。

列より先に行を埋める

このモードはオプション -x, --fillrows で有効になる。

表形式

入力に含まれる列の数を判断して、 表を作成する。 このモードはオプション -t, --table で有効になる。 列のフォーマットは --table-* オプションで調整できる。 よくわからない場合はこのモードを使うと良い。 対話モードにおいて、 この出力は端末幅に調整される。 また非対話モード (詳細は --output-width 参照) では 80 カラムに調整される。

入力は file から読み込む。 file が指定されていなければ、標準入力から読み込む。 空行は無視し、無効なマルチバイトシーケンスはすべて \x<hex> 方式でエンコードする。

オプション

--table-* オプションに対する引数 columns は、 列の名前または列の番号を、カンマで区切ったリストである。列の名前は、--table-columns オプションで指定したものであり、列の番号は、入力における列の順番である。 列の名前と番号は混ぜて使うこともできる。 特別なプレースホルダーとして '0' (つまり -R0) があり、 これは全カラムを指定する。

-J, --json

表の出力に JSON フォーマットを使用する。 --table-columns オプションが必須である。 --table-name オプションも指定した方がよい。

-c, --output-width width

文字 (character) 数で指定された幅に出力を整形する。 このオプションの元の名前は --columns であったが、 その名前はバージョン 2.30 以来、 非推奨になっている。 デフォルトでは、 width より長い入力があっても、 短縮されないことに注意すること。 デフォルト値は端末幅であるが、 非対話モードでは 80 カラムである。 カラムのヘッダー行は切り詰められない。

-d, --table-noheadings

ヘッダーを表示しない。このオプションを使用すれば、 コマンドラインでは列の名前に便宜的な名前を使っておいて、 表を表示する際にはヘッダーを見せないようにすることができる。

-o, --output-separator string

表出力における列間の区切りを指定する (デフォルトはスペース 2 個)。

-s, --separator separators

表形式を選択したときに、入力項目の区切りに使える文字 (複数可) を指定する (デフォルトはホワイトスペース)。

-t, --table

入力に含まれる列の数を判断して、表を作成する。デフォルトでは、 列はスペースで区切られるが、--output-separator オプションを使って指定した文字で区切ることもできる。 表形式の出力は、表示を見栄えのよいものにするのに便利である。

-N, --table-columns names

列の名前を、カンマで区切った名前のリストで指定する。 そうした名前は、表のヘッダに使われたり、オプション引数中で特定の列を指定するのに使われたりする。

-l, --table-columns-limit number

入力カラムの最大数を指定する。 入力データ内のカラム数が、 この制限値よりも大きかった場合、 最終カラムは、 残りのデータがすべて出力される。

-R, --table-right columns

指定した列でテキストを右詰めにする。

-T, --table-truncate columns

必要ならテキストを短縮してもよい列を指定する。 このオプションを指定しないと、 表の中の非常に長い項目は、 何行かに渡って表示されるかもしれない。

-E, --table-noextreme columns

列の幅を計算する際、並外れて長い (平均より長い) セルがあった場合に、そうしたセルを無視できる列を指定する。 このオプションは、列の幅の計算や表の整形には影響するが、表示されるテキストには影響を与えない。

このオプションを指定しないデフォルトでは、このオプションの動作は、表示される最後の列に適用される。

-e, --table-header-repeat

ページごとにヘッダー行を表示する。

-W, --table-wrap columns

長いテキストの表示に必要な場合に、複数行のセルを使うことのできる列を指定する。

-H, --table-hide columns

指定した列を表示しない。名前の付いていない列をすべて隠すには、列の名前や番号の代わりに '-' という特別な引数を使えばよい (--table-columns を参照)。

-O, --table-order columns

出力における列の順番を指定する。

-n, --table-name name

JSON 出力に使う表の名前を指定する。デフォルトは "table" である。

-L, --keep-empty-lines

ホワイトスペースのみからなる行が入力されても、これを保持する。 デフォルトでは、空の行はいっさい無視する。 このオプションの元の名前は --table-empty-lines であったが、 現在は非推奨となっている。 その名前であると、 表モードにしか適用されないオプションと誤解されるためである。

-r, --tree column

出力をツリー状にする列を指定する。 なお、 親子関係における循環などの変則的な指定は、 何も出力されず単に無視される。

-i, --tree-id column

親子関係を生成するための「行 ID」が存在する列を指定する。

-p, --tree-parent column

親子関係を生成するための「親 ID」が存在する列を指定する。

-x, --fillrows

列を埋める前に行を埋める。

-h, --help

ヘルプを表示して終了する。

-V, --version

バージョンを表示して終了する。

環境変数

他に情報が得られない場合は、画面の幅を決定するために環境変数 COLUMNS が使われる。

履歴

column コマンドは 4.3BSD-Reno で登場した。

バグ

バージョン 2.23 で -s オプションの動作を欲張りでなくした。 例を示そう。

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

従来の出力:

a  b  c
1  3

新しい出力 (util-linux 2.23 以降):

a  b  c
1     3

このツールの従来のバージョンでは、「デフォルトでは、列よりも先に行を埋める。 -x オプションはこの動作を反対にする」と述べていた。 しかし、この説明は、実際の動作を正しく反映していなかったので、その後訂正されている (「説明」セクションを参照のこと)。column の他の実装では、以前の説明を今でも使っているかもしれないが、 いずれにせよ、動作はどれも同じはずである。

fstab をヘッダー行を付けて表示し、数値は右詰めにする。

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

名前の付いていない列は隠して、fstab を表示する。

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

ツリー表示の例:

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

関連項目

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

バグ報告

バグ報告は、 以下にある issue トラッカーを利用すること。 <https://github.com/util-linux/util-linux/issues>.

入手方法

この column コマンドは、util-linux パッケージの一部であり、 以下からダウンロードできる。 Linux Kernel Archive <https://www.kernel.org/pub/linux/utils/util-linux/>.