0

要将输出从 更改2012 1 520120105,是否足以更改

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
4

1 回答 1

2

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

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

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

这个答案并没有试图解决您尝试做的事情在更大范围内是否合理;它只是显示了假设需要完成它可以/应该如何完成。还有一个假设是字段之间有空格 for 2012 11 25

于 2012-08-12T06:18:31.660 回答