linux shell awk printf怎么对数字右补0,是右补0

echo 25 | awk '{printf ("%03d\n",$1)} '是左补0,我想实现右补0
cat xx.txt| awk -F ',' '{printf("%-019s,%f\n", $3, $9)}我这么写19位只是右补空格,并没有补0

由于printf很难右边补零这样的特性,可以换一种方式,作为字符串处理
echo 12145 | awk '{width=10; printf("%d",$1); for(i=0;i<width-length($1);++i) printf "0"; print ""} '

其中width为指定的宽度
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-07-29
[root@High-Hadoop-S1 ~]# echo 25
25
[root@High-Hadoop-S1 ~]# echo 25|sed '/25/s/$/0/'
250
[root@High-Hadoop-S1 ~]#
awk我用的不熟练。追问

cat xx.txt| awk -F ',' '{printf("%-019s,%f\n", $3, $9)}我这么写19位只是右补空格,并没有补0

追答

要不你的需求跟我说说,看看我能不能帮上你。是要在目标示例文件中对指定字符串批量添加字段么?

第2个回答  2019-07-15
假设是要补够长度为10
echo 25|awk '{print substr($0"00000000",0,10)}'
相似回答