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

Linux Awk编程整数格式为01而不是1,linux,awk,Linux,Awk,要将输出从2012 1 5更改为20120105,从 ls $run |xargs sed q |awk '{print $1,$2,$3} ' >> stin-2 到 如果使用printf()(这可能是获得所需输出的正确方法),则应使用与参数数量相同的转换说明符,就像在C中一样 awk '{printf "%.4d%.2d%.2d\n", $1, $2, $3}' 注意格式后面的逗号;这是至关重要的。示例代码忽略了这一点,因此它将给定的格式字符串和$1连接为格式字符串,然后为格

要将输出从
2012 1 5
更改为
20120105
,从

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

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

awk '{printf "%.4d%.2d%.2d\n", $1, $2, $3}'
注意格式后面的逗号;这是至关重要的。示例代码忽略了这一点,因此它将给定的格式字符串和
$1
连接为格式字符串,然后为格式字符串提供两个参数。您可能也需要换行符,
printf()
不会自动添加(与
print
不同)。选择
%d
而不是
%i
是任意的;他们是一样的。使用
%.2d
并不是完全随意的;它实现了与
%2.2d
相同的效果,但使用的字符更少


这个答案并不试图说明你所做的在更大范围内是否明智;它简单地说明了在假设需要这样做的情况下,如何能够/应该这样做。还有一个假设是,
2012 11 25

的字段之间有一个空格,为什么不首先使用
stat(1)
?您可以使用
ls$run | xargs sed q | awk'{print$1,“,$2,”,$3}>>stin 2
。或者
ls$run | xargs sed q | awk'{printf“%d%d%d”、$1、$2、$3}>>stin-2
。见鬼,正如伊格纳西奥·巴斯克斯·艾布拉姆斯所建议的,你们甚至可以使用“统计数据”;)不要解析来自
ls
的输出。
awk '{printf "%.4d%.2d%.2d\n", $1, $2, $3}'