awk编程整数格式为01而不是1

时间:2012-08-12 05:36:30

标签: linux awk

要将输出从2012 1 5更改为20120105,是否可以从

更改
ls $run |xargs sed q |awk '{print $1,$2,$3} ' >> stin-2

ls $run |xargs sed q |awk '{printf "%2.2i" $1,$2,$3} ' >> stin-2

1 个答案:

答案 0 :(得分:2)

如果你使用printf()(可能是正确的获得你想要的输出)你应该使用与参数一样多的转换说明符,就像在C中一样。

awk '{printf "%.4d%.2d%.2d\n", $1, $2, $3}'

注意格式后的逗号;这至关重要。示例代码省略了它,因此它将给定的格式字符串和$1连接为格式字符串,然后给出两个参数。您可能也需要新行,printf()不会自动添加(与print不同)。 %d超过%i的选择是任意的;他们是一样的。使用%.2d并非完全随意;它实现了与%2.2d相同的效果,但使用较少的字符来完成工作。

这个答案并没有试图解决你所做的事情是否在更大范围内是明智的;它只是展示了如何在假设需要完成的情况下完成它。还假设2012 11 25的字段之间有空格。