要将输出从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
答案 0 :(得分:2)
如果你使用printf()
(可能是正确的获得你想要的输出)你应该使用与参数一样多的转换说明符,就像在C中一样。
awk '{printf "%.4d%.2d%.2d\n", $1, $2, $3}'
注意格式后的逗号;这至关重要。示例代码省略了它,因此它将给定的格式字符串和$1
连接为格式字符串,然后给出两个参数。您可能也需要新行,printf()
不会自动添加(与print
不同)。 %d
超过%i
的选择是任意的;他们是一样的。使用%.2d
并非完全随意;它实现了与%2.2d
相同的效果,但使用较少的字符来完成工作。
这个答案并没有试图解决你所做的事情是否在更大范围内是明智的;它只是展示了如何在假设需要完成的情况下完成它。还假设2012 11 25
的字段之间有空格。