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