columnコマンドでテキストを表形式に整形する方法|TSVやログをきれいに揃える実践例も

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, テキスト処理 > columnコマンドでテキストを表形式に整形する方法|TSVやログをきれいに揃える実践例も
「ログファイルをcatで見ると列がズレていて読みにくい」
「awkでCSVを処理したはいいが、出力がぐちゃぐちゃで確認しにくい」

こういった場面でサッと使えるのが column コマンドです。
パイプで繋ぐだけで、バラバラな列を整然と揃えてくれる地味ながら強力なツールです。

この記事では、columnコマンドの基本的な使い方から、TSV・CSV・ログ整形への応用、よく詰まるポイントまでを解説します。
RHEL 9.4 / Ubuntu 24.04 LTSで動作確認済みです。

この記事のポイント

・column -t でスペース区切りのテキストをテーブル整形できる
・-s オプションで区切り文字を指定しCSV・TSVにも対応できる
・パイプで繋ぐだけなので他コマンドと自由に組み合わせられる
・util-linux版とBSD版で -s オプションの挙動が異なる点に注意


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

columnコマンドとは?何ができるのか

columnコマンドは、標準入力またはファイルのテキストを列幅を揃えて整形表示するコマンドです。
RHEL/CentOS/Ubuntu/Debianいずれでも標準搭載されており、追加インストール不要で使えます。

主な用途は以下のとおりです。

・スペース区切りのログを見やすい表形式に変換する
・TSVやCSVの内容をターミナルで確認するときに整形する
・psやdfなどのコマンド出力をさらに整形して視認性を高める

ファイルを直接書き換えるわけではなく、表示のみを整形するコマンドです。
パイプやリダイレクトで組み合わせて使うことが前提になっています。

基本的な使い方

1. スペース区切りのテキストを整形する(-t オプション)

最も基本的な使い方は、-t(table)オプションを使った整形です。
スペースを区切りとみなし、各列の幅を自動調整してくれます。

# テスト用データを用意する $ cat /tmp/servers.txt hostname ip_address status role web-01 192.168.10.11 running web db-01 192.168.10.21 running database cache-01 192.168.10.31 stopped cache backup-01 192.168.10.41 running backup # column -t で整形する $ column -t /tmp/servers.txt hostname ip_address status role web-01 192.168.10.11 running web db-01 192.168.10.21 running database cache-01 192.168.10.31 stopped cache backup-01 192.168.10.41 running backup

列の幅が自動的に揃い、一覧性が大幅に上がります。

2. TSVファイルを整形する(-s オプション)

タブ区切りのTSVファイルを整形するときは、-s(separator)オプションで区切り文字を指定します。

# タブ区切りのTSVファイルを整形する $ column -t -s $'\t' /tmp/data.tsv # またはechoで確認する場合 $ printf "name\tage\tcity\ntaro\t30\ttokyo\nhanako\t25\tosaka\n" | column -t -s $'\t' name age city taro 30 tokyo hanako 25 osaka

区切り文字にタブを指定するには $'\t' の形式(ANSI-C quoting)を使います。
単純に -s "\t" と書くと文字通りバックスラッシュ+tとして扱われるため、注意してください。

3. CSVファイルを整形する

CSVの区切り文字(カンマ)を指定することで、CSVの内容も整形して確認できます。

# CSVファイルを整形して確認する $ cat /tmp/users.csv username,uid,gid,home,shell root,0,0,/root,/bin/bash nobody,65534,65534,/,/sbin/nologin tomohiro,1000,1000,/home/tomohiro,/bin/bash $ column -t -s ',' /tmp/users.csv username uid gid home shell root 0 0 /root /bin/bash nobody 65534 65534 / /sbin/nologin tomohiro 1000 1000 /home/tomohiro /bin/bash

フィールド内にカンマが含まれる複雑なCSVには対応できません。
その場合はawkやPythonのcsvモジュールを使ってください。

応用・実務Tips

1. パイプで他のコマンドと組み合わせる

columnコマンドの真価は、他のコマンドとパイプで組み合わせるときに発揮されます。

# ps の出力を整形する(ヘッダ行含む) $ ps aux | head -1 && ps aux | grep nginx | column -t # df の出力を整形する $ df -h | column -t Filesystem Size Used Avail Use% Mounted on devtmpfs 4.0M 0 4.0M 0% /dev tmpfs 3.8G 0 3.8G 0% /dev/shm /dev/nvme0n1p4 197G 45G 152G 23% / /dev/nvme0n1p2 1.0G 291M 734M 29% /boot # /etc/passwd の一部をコロン区切りで整形して確認する $ grep -E "^(root|nobody|tomohiro)" /etc/passwd | column -t -s ':' root x 0 0 root /root /bin/bash nobody x 65534 65534 Kernel Ove.. / /sbin/nologin tomohiro x 1000 1000 /home/tomohiro /bin/bash

2. ログファイルを特定フィールドで絞り込んでから整形する

実務でよく使うのが、awkやgrepで必要な列だけ抽出してからcolumnで整形するパターンです。

# アクセスログからIPアドレス・ステータスコード・バイト数を抽出して整形 # (Apache/Nginx のcombinedログ形式の場合) $ awk '{print $1, $9, $10}' /var/log/nginx/access.log | tail -10 | column -t 192.168.1.101 200 15423 192.168.1.102 304 0 10.0.0.55 404 512 192.168.1.101 200 8192 10.0.0.88 500 256 # cronのログから日時とジョブ名だけ取り出して整形する $ grep "CRON" /var/log/syslog | awk '{print $1, $2, $3, $6}' | tail -10 | column -t

3. /etc/fstab や /proc/mounts の内容を確認する

# fstabの内容をスペース区切りで整形する $ column -t /etc/fstab # /etc/fstab UUID=xxxx-xxxx-xxxx-xxxx / xfs defaults 0 0 UUID=yyyy-yyyy-yyyy-yyyy /boot xfs defaults 0 0 UUID=zzzz-zzzz-zzzz-zzzz swap swap defaults 0 0 # 現在のマウント状況を整形して確認する $ cat /proc/mounts | column -t | head -15

mount コマンドの使い方と組み合わせてマウント設定を確認するときにも便利です。

4. 出力をファイルに保存して後から確認する

整形した結果をそのままファイルに保存することもできます。

# 整形結果をファイルに書き出す $ column -t /tmp/servers.txt > /tmp/servers_formatted.txt # パイプ+リダイレクトで組み合わせる $ ps aux | awk '{print $1, $2, $3, $11}' | column -t > /tmp/ps_summary.txt

トラブルシュート・エラー対処

1. util-linux版とBSD版の違いによる動作の差異

columnコマンドにはutil-linux版とBSD版の2種類があり、RHELやUbuntuはutil-linux版、macOSはBSD版が入っています。
util-linux版では-sで複数文字の区切りを指定できますが、BSD版では1文字のみという制限があります。

また、util-linux 2.34以降では--table-column(または-N)、--table-rightなどの高機能なオプションが追加されています。
バージョンは以下のコマンドで確認できます。

$ column --version column from util-linux 2.38.1

2. 出力が崩れる場合

columnコマンドの動作上、入力に日本語など全角文字が含まれると列幅の計算がずれることがあります。
全角文字は端末では2カラム分を占めますが、columnは1バイト単位で幅を計算するためです。

日本語を含むデータを整形したい場合は、awkで数値フィールドだけを抽出する、もしくはPythonのtabulateライブラリを検討してください。

3. 「column: line too long」エラーが出た場合

非常に長い行を含む大きなファイルを処理しようとすると、以下のエラーが出ることがあります。

column: line too long

この場合、まずawkやsedで列数を絞ってからcolumnに渡すか、大きすぎるファイルはheadやtailで分割して処理するのが現実的です。

4. 空行が含まれると整形が崩れる場合

ファイルに空行が含まれると、整形結果が崩れることがあります。
grepで空行を除外してからcolumnに渡すと解決できます。

# 空行とコメント行を除外してから整形する $ grep -v '^#' /etc/fstab | grep -v '^$' | column -t

Linux ポート確認の全コマンドのように複数コマンドの出力を確認するときも、この前処理パターンが役立ちます。

本記事のまとめ

columnコマンドの主な使い方をまとめます。
やりたいこと コマンド
スペース区切りのファイルを整形する column -t ファイル名
TSVファイルを整形する column -t -s $'\t' ファイル名
CSVファイルを整形する column -t -s ',' ファイル名
コロン区切りのファイルを整形する column -t -s ':' /etc/passwd
パイプで前段コマンドの出力を整形する df -h | column -t
空行・コメント行を除外してから整形する grep -v '^#' ファイル | grep -v '^$' | column -t
整形結果をファイルに保存する column -t ファイル名 > 出力ファイル名
columnコマンドは地味ながら、ターミナル上でのログ確認・設定ファイル確認の視認性を大幅に高めてくれるツールです。
特にpsdfawkなどの出力に組み合わせると威力を発揮します。

日常の調査・確認作業にぜひ取り入れてみてください。

ログ整形やデータ処理で、毎回ネット検索に頼っていませんか?

columnコマンド1つとっても、オプションの使い分けやパイプの組み合わせ方を知らなければ、実務での活用に限界があります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。