Linux printf コマンドは先行ゼロを印刷しません。

Linux printf コマンドは先行ゼロを印刷しません。
printf("TRL1%13s%013s%07s%07s%80s99%74s", nTotDBAmt, nTotCRAmt, nTotDBCnt, nTotCRCnt,"", "") >> sDAT_FILE

私たちはUnixからLinuxに移行しています。このコマンドはUnixではうまく機能しますが、Linuxでは機能しません。それは印刷する

TRL1     46038002   1270804215   1857   1843                                                                                99 

0の代わりにスペースを印刷します。

答え1

Linuxは通常GNU awkインストールする。どのバージョンなのかわかりません。アッ%s 型文字列の前にある 0 はサポートされていますが、非標準のようです。

%013sの代わりに%013dを試してください。

答え2

質問で達成したい目標が正確に何であるかは不明です。

10進数を印刷したい場合は、次のように書きます。

printf("%013d",a);

0- スペースの代わりにゼロで左の数字を埋めます。

文字を印刷したい場合は、次のように書きます。

printf("%*s",13,"string which needs to be printed")

ここでは、printf() の整数引数として印刷する文字の長さを指定します。*これは渡された引数に置き換えられます。

関連情報