Scroll to navigation

COLUMN(1) User Commands COLUMN(1)

名前

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

書式

column [options] [file...]

読者へのご注意

これは、util-linux 版の column コマンドのマニュアルである。column コマンドの実装には、いくつかの系統がある。御使用のディストリビューションが util-linux 版以外の column コマンドを採用している場合は、 動作やオプションがここで説明しているものとかなり違っているかもしれない。 そういうときは、英語版しかないかもしれないが、お手元の column コマンドに付属するマニュアルに当たってみていただきたい。

説明

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

行 (row) より先に列 (column) を埋める
これがデフォルトのモードである (後方互換のためそうなっている)。
列より先に行を埋める
このモードはオプション -x, --fillrows で有効になる。
表形式
入力に含まれる列の数を判断して、表を作成する。このモードはオプション -t, --table で有効になる。列のフォーマットは --table-* オプションで調整できる。どのモードを使うか迷っているなら、このモードを使うとよい。

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

オプション

--table-* オプションに対する引き数 columns は、 列の名前または列の番号を、コンマで区切ったリストである。列の名前は、--table-columns オプションで指定したものであり、列の番号は、入力における列の順番だ。 列の名前と番号を混ぜて使うこともできる。

表の出力に JSON フォーマットを使用する。--table-columns オプションが必須である。--table-name オプションも指定した方がよい。
文字 (character) 数で指定された幅に出力を整形する。 このオプションの元の名前は --columns だったが、その名前はバージョン 2.30 以来、非推奨になっている。デフォルトでは、width より長い入力があっても、短縮されないことに注意していただきたい (訳注: 表を width の幅にきちんと収めるには、-t とともに -T-W を指定する必要がある)。
ヘッダを表示しない。このオプションを使用すれば、 コマンドラインでは列の名前に便宜的な名前を使っておいて、 表を表示する際にはヘッダを見せないようにすることができる。
表出力における列間の区切りを指定する (デフォルトはスペース 2 個)。
表形式を選択したときに、入力項目の区切りに使える文字 (複数可) を指定する (デフォルトはホワイトスペース)。
[訳注]
デフォルトでは、ホワイトスペース (スペースやタブ) の連続は 1 つのデリミタとして解釈される。それに対し、-s オプションで入力のデリミタに空白とタブを指定したときは、空白やタブ 1 個 1 個が独立したデリミタとして扱われる。別の例を挙げるなら、 -s "$%" と指定すると、$% という連続がデリミタになるのではなく、$% の両方が、それぞれデリミタとして扱われる。
入力に含まれる列の数を判断して、表を作成する。デフォルトでは、 列はスペースで区切られるが、--output-separator オプションを使って指定した文字で区切ることもできる。 表形式の出力は、表示を見栄えのよいものにするのに便利である。
列の名前を、コンマで区切った名前のリストで指定する。 そうした名前は、表のヘッダに使われたり、オプション引き数中で特定の列を指定するのに使われたりする。
指定した列でテキストを右詰めにする。
必要ならテキストを短縮してもよい列を指定する。 このオプションを指定しないと、表の中の非常に長い項目は、何行かに渡って表示されるかもしれない。
列の幅を計算する際、並外れて長い (平均より長い) セルがあった場合に、そうしたセルを無視できる列を指定する。 このオプションは、列の幅の計算や表の整形には影響するが、表示されるテキストには影響を与えない。

このオプションを指定しないデフォルトでは、このオプションの動作は、表示される最後の (訳注: すなわち、一番右の) 列に適用される。

ページごとにヘッダ行を表示する。
長いテキストの表示に必要な場合に、複数行のセルを使うことのできる列を指定する。
指定した列を表示しない。名前の付いていない列をすべて隠すには、列の名前や番号の代わりに '-' という特別な引き数を使えばよい (--table-columns を参照)。
出力における列の順番を指定する。
JSON 出力に使う表の名前を指定する。デフォルトは "table" である。
入力中に空行があるたびに、表にも空行を挿入する。デフォルトでは、 空行はすべて無視することになっている。
出力をツリー状にする列を指定する。 なお、親子関係における循環などの変則的な指定は、警告を出さずに無視される。
親子関係を生成するための「行 ID」が存在する列を指定する。
親子関係を生成するための「親 ID」が存在する列を指定する。
列を埋める前に行を埋める。
バージョン情報を表示して、終了する。
ヘルプを表示して、終了する。

環境変数

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

用例

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

バグ

バージョン 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 の他の実装では、以前の説明を今でも使っているかもしれないが、 いずれにせよ、動作はどれも同じはずである。

関連項目

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

履歴

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

入手方法

この column コマンドは、util-linux パッケージの一部であり、 https://www.kernel.org/pub/linux/utils/util-linux/ から入手できる。

February 2019 util-linux