コマンド出力を整形してテーブル形式で表示したい
スペースやタブで区切られたコマンドの出力結果を、列が揃ったテーブル形式で見やすく表示したい。
例えば以下のようなスペース区切りのデータがある。
Name Age City
Alice 25 Tokyo
Bob 30 Osaka
Charlie 28 Kyoto
このデータの列を揃えて見やすく表示したい。
Name Age City
Alice 25 Tokyo
Bob 30 Osaka
Charlie 28 Kyoto
column -t
columnコマンドに-tオプションをつけると、入力データをテーブル形式で整形して出力する。
$ column -t data.txt
Name Age City
Alice 25 Tokyo
Bob 30 Osaka
Charlie 28 Kyoto
各列の最大幅に合わせて自動的にスペースが調整され、列が揃う。
区切り文字を指定する
デフォルトではスペースやタブが区切り文字として扱われるが、-sオプションで区切り文字を指定できる。
カンマ区切りのCSVファイルを整形する場合は以下のようにする。
Name,Age,City
Alice,25,Tokyo
Bob,30,Osaka
Charlie,28,Kyoto
$ column -t -s ',' data.csv
Name Age City
Alice 25 Tokyo
Bob 30 Osaka
Charlie 28 Kyoto
-s ','オプションでカンマを区切り文字として指定している。
パイプでコマンドの出力を整形する
コマンドの出力結果をパイプでcolumn -tに渡すと、その場で整形できる。
$ echo -e "Name Age City\nAlice 25 Tokyo\nBob 30 Osaka"
Name Age City
Alice 25 Tokyo
Bob 30 Osaka
$ echo -e "Name Age City\nAlice 25 Tokyo\nBob 30 Osaka" | column -t
Name Age City
Alice 25 Tokyo
Bob 30 Osaka
例
mountコマンドの出力を見やすく整形する例。
$ mount | column -t
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=4096k,nr_inodes=1024)
環境変数の一覧を整形する例。
$ env | grep -E '^[A-Z_]+=' | sed 's/=/\t/' | column -t -s $'\t'
PATH /usr/local/bin:/usr/bin:/bin
HOME /home/user
SHELL /bin/bash
\第一線のプログラマーの行動原理を学べる!/
