Corredor

ウェブ、プログラミングの勉強メモ。

awk を使って出力のアラインメントを揃える

Node.js スクリプトを書く際は、console.table() とか、columnify という npm パッケージとかを使うと、出力するデータをイイカンジに整形できる。

neos21.hatenablog.com

今回は Bash スクリプトの中で、イイカンジに整形したくて、やり方を調べた。

ほとんど上の記事どおり。

hoge-server RUNNING
fugafuga-server STOPPED
foo-server RUNNING
something-server RUNNING

こんな感じの出力結果となるコマンドがあったとする。RUNNINGSTOPPED といった表記部分で、アラインメントを揃えたい。

そんなときはこう書く。

$ cat result.txt | awk '{ printf "%-20s %s\n", $1, $2 }'

hoge-server          RUNNING
fugafuga-server      STOPPED
foo-server           RUNNING
something-server     RUNNING

するとこうなる。

%-20s 部分で、1カラム目を20文字分に調整している。

もし、1カラム目のテキストの長さよりも短い数値を指定した場合はどうなるか、というと、長い部分はちぎられず、アラインメントが揃わないだけ、という動きになる。

$ cat result.txt | awk '{ printf "%-15s %s\n", $1, $2 }'

hoge-server     RUNNING
fugafuga-server STOPPED
foo-server      RUNNING
something-server RUNNING

コレは15文字分指定したときの結果。something-server の行は桁数が足りないためにアラインメントが揃っていない。

内容物に合わせて桁数を指定せずにうまいことやってくれる方法はないかなーと思って探したのだが、パッとは見つからなかった。まぁいいや。w

AWK実践入門 (Software Design plus)

AWK実践入門 (Software Design plus)

プログラミング言語AWK

プログラミング言語AWK

  • 作者: A.V.エイホ,P.J.ワインバーガー,B.W.カーニハン,足立高徳
  • 出版社/メーカー: USP研究所
  • 発売日: 2010/01/01
  • メディア: 単行本(ソフトカバー)
  • クリック: 1回
  • この商品を含むブログを見る

「シェル芸」に効く!AWK処方箋

「シェル芸」に効く!AWK処方箋

sed & awkプログラミング 改訂版 (A nutshell handbook)

sed & awkプログラミング 改訂版 (A nutshell handbook)