次のように、ログからいくつかの監視データを印刷します。
printf " %10s %5s %25s %15s %15s %s${txtrst}\n" $date $time $metric $status $current_criticality "$failure"
定義された長さのない最後の列を境界内で包みたいです。ここで、左は明確に定義され、右は画面がある場所(通常の改行位置)です。長さを定義しようとしましたが解決されませんでした。
現在の出力例:
09/30/2015 14:39 execution (SUCCESS) SUCCESS
09/30/2015 14:34 execution (FAILED) ERROR Step 3: Match Failed Blah blah blah blah blah blah blah.
09/30/2015 14:34 execution (FAILED) SUCCESS Step 1: Match Failed Blah blah blah blah blah blah blah.
09/30/2015 14:34 round_trip (10.174) ERROR Step 1: Match Failed Blah blah blah blah blah blah blah.
09/30/2015 14:34 round_trip (10.174) SUCCESS Step 1: Match Failed Blah blah blah blah blah blah blah.
09/30/2015 13:30 round_trip (94.652) ERROR
09/30/2015 13:30 round_trip (94.652) SUCCESS
09/30/2015 13:19 round_trip (0.257) SUCCESS
09/30/2015 13:16 round_trip (110.012) ERROR
09/30/2015 13:16 round_trip (110.012) SUCCESS
私は見たいです:
09/30/2015 14:39 execution (SUCCESS) SUCCESS
09/30/2015 14:34 execution (FAILED) ERROR Step 3: Match Failed
Blah blah blah blah
blah blah blah.
09/30/2015 14:34 execution (FAILED) SUCCESS Step 1: Match Failed
Blah blah blah blah
blah blah blah.
09/30/2015 14:34 round_trip (10.174) ERROR Step 1: Match Failed
Blah blah blah blah
blah blah blah.
09/30/2015 14:34 round_trip (10.174) SUCCESS Step 1: Match Failed
Blah blah blah blah
blah blah blah.
09/30/2015 13:30 round_trip (94.652) ERROR
09/30/2015 13:30 round_trip (94.652) SUCCESS
09/30/2015 13:19 round_trip (0.257) SUCCESS
09/30/2015 13:16 round_trip (110.012) ERROR
09/30/2015 13:16 round_trip (110.012) SUCCESS
SQL*PLUSの列型レポートによく似ています: col $column format a15
どんなアイデアでもよろしくお願いします!
ベストアンサー1
以下は最後の列なので動作するクルーガーです。
printf
行の最初の部分(次を$failure
除くすべての部分)いいえ末尾の新しい行。echo "$failure" | fold -s -w $desired_width | sed -e "2,\$s/^/$spacing/"
ここでは$desired_width
、列の幅$failure
で、$ spacingは、2番目の行(3番目の行など)が正しい位置から始まるようにするために必要なスペースの量です。このようなものを使用すると、これらのスペースを簡単に作成できますspacing=$(echo $'\t' | pr -Te71)
。正確に計算すれば71なら大丈夫でしょう…
これはfold
、改行を実行してから、2番目とそれ以降の列に間隔(ソートのため)を追加することによってsed
行われます。印刷すると、最初の行は他の出力に関連付けられます(改行がないため)。
これを正しい方法で行うには、Perlにはいくつかのモジュールがあります。Text::ASCIITable
、Text::SimpleTable
、Text::TabularDisplay
これができるはずです。