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}'