Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 对齐并格式化一列_Shell_Awk - Fatal编程技术网

Shell 对齐并格式化一列

Shell 对齐并格式化一列,shell,awk,Shell,Awk,我有一些脚本的以下输出,它显示了设备、正常运行时间和固件版本 电流输出 device1 12:34:56 version device2 1:2:3 version ... deviceN H:MM:S version 预期产量 device1 12:34:56 version device2 01:02:03 version ... deviceN HH:MM:SS version 正如您所看到的,正常运行时间列的格式不正确(在小时/分

我有一些脚本的以下输出,它显示了设备、正常运行时间和固件版本

电流输出

device1  12:34:56 version  
device2  1:2:3    version  
...  
deviceN  H:MM:S   version  
预期产量

device1  12:34:56 version  
device2  01:02:03 version  
...  
deviceN  HH:MM:SS version  
正如您所看到的,正常运行时间列的格式不正确(在小时/分钟/秒中没有前导零),我需要很好地格式化它。
我尝试使用split和sprintf,但没有得到任何好的版本,这里有一种方法:

awk '{split($2,a,":");$2=sprintf("%02d:%02d:%02d",a[1],a[2],a[3])}1' file
device1 12:34:56 version
device2 01:02:03 version

它拆分日期字段,然后使用
%02d
获取前导的
0

为什么它无法在
12:34:56
?@AvinashRaj之前添加
0
<代码>%02d告诉格式化程序,如果一个数字长度不是2个字符,则填充的前导零不能超过2个。感谢您的解释。