はじめに

こんにちは!今回はcolumnコマンドについて解説します。

columnは、テキストをカラムで整列させるコマンドです。複雑なテキストをスッキリと見やすくフォーマットしてくれます。「出力がぐちゃぐちゃで読みにくい」という時に活躍。

スクリプトの出力を整形したり、logやcsv、passwd ファイル などを読みやすくしたりするのに超便利ですよ。

columnコマンドとは

columnは、入力データをカラム(列)単位で整列して表示する外部コマンドです。“column"は「列」という意味ですね。

区切り文字で区切られたデータを適切に整列させて、見やすいテーブル形式で出力します。スクリプト出力やログファイルの整形に最適です。

基本構文

1
column [オプション] [ファイル]

ファイル名を指定しないと標準入力から読み込みます。

主なオプション

オプション 説明
-t タブ区切りとして扱う
-s 区切り文字を指定
-x 複数列を使用(ワイドモード)
-J JSON フォーマット出力
-c 出力幅を指定

使用例

例1: 基本的な整列

1
2
3
4
5
6
cat << 'EOF' | column
name age city
Alice 25 Tokyo
Bob 30 Osaka
Charlie 35 Kyoto
EOF

実行結果:

1
2
3
4
name     age  city
Alice    25   Tokyo
Bob      30   Osaka
Charlie  35   Kyoto

スペース区切りが自動的に整列されます。

例2: タブ区切りで処理

1
2
3
4
5
cat << 'EOF' | column -t
name age city
Alice 25 Tokyo
Bob 30 Osaka
EOF

実行結果:

1
2
3
name     age  city
Alice    25   Tokyo
Bob      30   Osaka

タブ区切りをきれいに整列。

例3: CSV形式を整形

1
2
3
4
5
cat << 'EOF' | column -s ',' -t
name,age,city
Alice,25,Tokyo
Bob,30,Osaka
EOF

実行結果:

1
2
3
name     age  city
Alice    25   Tokyo
Bob      30   Osaka

カンマ区切りをテーブル形式に。

例4: /etc/passwd を見やすく

1
head -5 /etc/passwd | column -t -s ':'

実行結果:

1
2
3
4
root    x  0   0   root            /root       /bin/bash
daemon  x  1   1   daemon          /usr/sbin   /bin/nologin
bin     x  2   2   bin             /bin        /bin/nologin
...

passwd ファイルを読みやすくフォーマット。

例5: コマンド出力を整形

1
ls -la | column

実行結果:

1
(ls出力がカラムで整列)

ls の出力を整形。

例6: df コマンドの出力を見やすく

1
df -h | column -t

実行結果:

1
2
3
Filesystem      Size  Used  Avail  Use%  Mounted
/dev/sda1       100G   50G   50G   50%   /
tmpfs            16G    0    16G    0%   /dev/shm

ディスク使用量をテーブルで表示。

例7: ps コマンドの出力を整形

1
ps aux | column -t

実行結果:

1
(プロセス一覧がテーブルで表示)

プロセス情報を見やすくフォーマット。

例8: 複数列でワイドモード

1
2
3
4
5
cat << 'EOF' | column -x
apple banana cherry date
egg fig grape honey
ice jam kiwi lemon
EOF

実行結果:

1
2
3
apple   banana  cherry  date
egg     fig     grape   honey
ice     jam     kiwi    lemon

複数列を使ってコンパクト表示。

例9: 制限幅で出力

1
2
3
4
cat << 'EOF' | column -c 40
name,age,city
Alice,25,Tokyo
EOF

実行結果:

1
(40文字幅に制限)

出力幅を制御。

例10: 複雑なテキストを整形

1
echo -e "ID NAME\n1 Alice\n2 Bob\n3 Charlie" | column -t

実行結果:

1
2
3
4
ID  NAME
1   Alice
2   Bob
3   Charlie

複雑なテキストをテーブル化。

Tips・注意点

columnと paste の組み合わせ

1
2
# 複数ファイルを横に並べて整形
paste file1.txt file2.txt | column -t

複数ファイルのデータを横並びに整列。

awkと組み合わせ

1
2
# データを抽出して整形
awk '{print $1, $3}' file.txt | column -t

抽出後に整形。

ヘッダ行の処理

1
2
3
# ヘッダとデータを分けて処理
head -1 file.csv
tail -n +2 file.csv | column -s ',' -t

ヘッダ行を別に処理する場合。

大容量ファイルの処理

columnは全行をメモリに読み込むため、非常に大きなファイルでは効率が落ちます。

1
2
# パイプで部分的に処理
head -1000 largefile.txt | column -t

実践的な使い方

ログファイルを見やすく

1
2
# アクセスログをテーブルで表示
cat /var/log/access.log | column -t

ログの可読性が大幅に向上。

設定ファイル比較

1
2
# 設定ファイルを見やすく整形
cat /etc/fstab | column -t -s ' '

マウント設定をテーブルで確認。

スクリプト出力の整形

1
2
3
#!/bin/bash
echo "USER PID MEMORY"
ps aux | awk '{print $1, $2, $6}' | tail -n +2 | column -t

カスタムレポートを見やすく。

データベースクエリ結果の整形

1
mysql -e "SELECT name, age, city FROM users;" | column -t -s '\t'

データベース出力をテーブル化。

まとめ

columnコマンドのポイント:

  • テキストをカラムで整列させる
  • 複雑な出力を見やすくフォーマット
  • -t: タブ区切りとして扱う
  • -s: 区切り文字を指定
  • -x: ワイドモード(複数列)
  • -c: 出力幅を指定
  • awk、grep、その他コマンドと組み合わせに最適
  • よく使う組み合わせ: column -t, column -s ',' -t

出力がぐちゃぐちゃで読みにくい時は、columnで整形すると、データの構造が一気に明確になります。スクリプト開発やシステム管理の効率アップに間違いなし!