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() 的整数参数,*
被替换为传递的参数