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() の整数引数として印刷する文字の長さを指定します。*
これは渡された引数に置き換えられます。