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
オプションで指定したものであり、列の番号は、入力における列の順番だ。
列の名前と番号を混ぜて使うこともできる。
- -J, --json
- 表の出力に JSON
フォーマットを使用する。
--table-columns
オプションが必須である。
--table-name
オプションも指定した方がよい。
-
-c, --output-width width
- 文字 (character)
数で指定された幅に出力を整形する。
このオプションの元の名前は
--columns
だったが、その名前はバージョン
2.30
以来、非推奨になっている。デフォルトでは、
width
より長い入力があっても、短縮されないことに注意していただきたい
(訳注: 表を width
の幅にきちんと収めるには、
-t とともに -T か -W
を指定する必要がある)。
- -d, --table-noheadings
- ヘッダを表示しない。このオプションを使用すれば、
コマンドラインでは列の名前に便宜的な名前を使っておいて、
表を表示する際にはヘッダを見せないようにすることができる。
-
-o, --output-separator string
- 表出力における列間の区切りを指定する
(デフォルトはスペース
2 個)。
-
-s, --separator separators
- 表形式を選択したときに、入力項目の区切りに使える文字
(複数可) を指定する
(デフォルトはホワイトスペース)。
- [訳注]
- デフォルトでは、ホワイトスペース
(スペースやタブ)
の連続は 1
つのデリミタとして解釈される。それに対し、
-s
オプションで入力のデリミタに空白とタブを指定したときは、空白やタブ
1 個 1
個が独立したデリミタとして扱われる。別の例を挙げるなら、
-s "$%"
と指定すると、 $%
という連続がデリミタになるのではなく、
$ と %
の両方が、それぞれデリミタとして扱われる。
- -t, --table
- 入力に含まれる列の数を判断して、表を作成する。デフォルトでは、
列はスペースで区切られるが、
--output-separator
オプションを使って指定した文字で区切ることもできる。
表形式の出力は、表示を見栄えのよいものにするのに便利である。
-
-N, --table-columns names
- 列の名前を、コンマで区切った名前のリストで指定する。
そうした名前は、表のヘッダに使われたり、オプション引き数中で特定の列を指定するのに使われたりする。
-
-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, --table-empty-lines
- 入力中に空行があるたびに、表にも空行を挿入する。デフォルトでは、
空行はすべて無視することになっている。
-
-r, --tree column
- 出力をツリー状にする列を指定する。
なお、親子関係における循環などの変則的な指定は、警告を出さずに無視される。
-
-i, --tree-id column
- 親子関係を生成するための「行
ID」が存在する列を指定する。
-
-p, --tree-parent column
- 親子関係を生成するための「親
ID」が存在する列を指定する。
- -x, --fillrows
- 列を埋める前に行を埋める。
-
-V, --version
- バージョン情報を表示して、終了する。
- -h, --help
- ヘルプを表示して、終了する。
他に情報が得られない場合は、画面の幅を決定するために環境変数
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/
から入手できる。