Linux printf 命令不打印前导 0

Linux printf 命令不打印前导 0
printf("TRL1%13s%013s%07s%07s%80s99%74s", nTotDBAmt, nTotCRAmt, nTotDBCnt, nTotCRCnt,"", "") >> sDAT_FILE

我们正在从 Unix 迁移到 Linux。这个命令在unix上工作得很好,但在Linux上却工作得很好。它打印

TRL1     46038002   1270804215   1857   1843                                                                                99 

它打印一个空白而不是零。

答案1

Linux通常有GNU awk安装。我不知道哪个版本awk支持 %s 格式字符串的前导零,但它似乎是非标准的。

尝试使用 %013d 而不是 %013s。

答案2

从问题来看,还不清楚你到底想要实现什么目标

如果你想打印十进制数字,我会写

printf("%013d",a);

0- 它用零而不是空格向左填充数字

如果你想打印字符,我会写

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

这里我们指定要打印的字符长度作为 printf() 的整数参数,*被替换为传递的参数

相关内容