表形式でファイルに書き込む

表形式でファイルに書き込む

printメールに添付ファイルとして送信されるスクリプトを介してファイルに何かを書き込もうとします。

さて、ファイルに正しい形式を維持しようとしています。 HTMLテーブルに似たテーブル形式を印刷して保持できますか?

ループでは、コードが次の内容を追加すると仮定します。

       `print "|App Name:$1\tRegion:$2\tEnvironment:$3| >> file_attch.dat`

これで、パラメータのサイズは変更できます。たとえば、$1 は 7~10 文字、$2 は 5~15 文字、$3 は 10~20 文字です。さて、異なる文字長の連続した行の添付ファイルを印刷するのは奇妙に見えます。

最初の10文字を1ドルで予約し、15文字を2ドルで予約してから、20文字を3ドルで予約できます。print目的を達成できる形式のタイプです。

修正する:

たぶん私は質問を正しくしていないかもしれません。例は次のとおりです。

    App:PROPIA  Region:silo2   Env:INT
    App:SRO  Region:silo3   Env:SYS

上記の場合、PROPIAとSROは文字の長さによって異なるため、表形式は保持されません。私は次のようなものが欲しい:

    App:PROPIA  Region:silo2   Env:INT
    App:SRO     Region:silo3   Env:SYS

たとえば、実際の文字長に関係なく、最初のパラメータに10文字を予約し、2番目のパラメータに次の10文字を予約します。

ベストアンサー1

printf 'App:%-10s\tRegion:%-15s\tEnv:%-20s\n' "$1" "$2" "$3"

これは、3つの文字列に対して10、15、20文字を予約し、そのスペース内で文字列を左揃えにします。

スクリプト例:

set -- PROPIA silo2 INT SRO silo3 SYS
while [ "$#" -gt 0 ]; do
    printf 'App:%-10s\tRegion:%-15s\tEnv:%-20s\n' "$1" "$2" "$3"
    shift 3
done

出力:

App:PROPIA      Region:silo2            Env:INT
App:SRO         Region:silo3            Env:SYS

おすすめ記事