我々は以下の結果を得た。
catgh.log
machine status
=============================================================
connection_ght 400
pach_po 72
timeout 311
ping_agent 119675
rt_machine 231
ginco_snmp 14
.
.
.
.
使い方printf
machine status
=============================================================
connection_ght..... 400
pach_po............ 72
timeout............ 311
ping_agent......... 119675
rt_machine......... 231
ginco_snmp ........ 14
答え1
ヘアストラップに点線を追加し、printf
長printf
さに合わせてカットします。シェルから:
$ for x in a bbb cccccc ; do
printf '%.20s %s\n' "$x.................................." blah;
done
a................... blah
bbb................. blah
cccccc.............. blah
存在するawk
:
$ printf "a 123\nbbbbbb 456\n" |
awk '{printf "%.20s %s\n", $1 ".....................", $2}'
a................... 123
bbbbbb.............. 456
存在する、%N.Ms
窒素フィールドの最小幅です。中サイズ最大値。
最初のフラグメントを2番目のフラグメントに変換するには、次のようにします。
$ awk 'NR <= 2 {print; next} {printf "%.20s %s\n", $1 ".....................", $2}' < gh.log
machine status
=============================================================
connection_ght...... 400
pach_po............. 72
etc.
条件はNR <= 2 {print; next}
最初の2行をそのまま渡し、残りは上記のように変換されます。これは、他の列などがないと仮定します。味に合わせて適応してください。
printf
フィールドの幅は、その位置にaを置くと別々のパラメータとして提供される可能性があるため、次*
のようにすることもできます。
printf '%s%.*s %s\n' "$x" $(( 20 - ${#x} )) "................................" blah
(変数の${#x}
長さx
)awk