awkを使用して「:」時間形式を追加する

awkを使用して「:」時間形式を追加する

Lab1という入力ファイルの場合:

034023  052030
034023  022130
044023  012030
034223  022030
034123  152030
024023  152030

AWKコマンド awk 'gsub(/[0-9][0-9]/,"&:",$1) gsub(/[0-9][0-9]/,"&:",$2)' Lab1

結果:

03:40:23: 05:20:30:
03:40:23: 02:21:30:
04:40:23: 01:20:30:
03:42:23: 02:20:30:
03:41:23: 15:20:30:
02:40:23: 15:20:30:

末尾のコロンを防ぐ方法は?

希望する結果

    03:40:23 05:20:30
    03:40:23 02:21:30

答え1

awk '
    {
        for(i=1;i<=NF;i++){
            sub(/[0-9]{4}$/,":&",$i)
            sub(/:[0-9]{2}/,"&:",$i)
        }
     }
     1
     ' <<<\
'034023  052030
034023  022130
044023  012030
034223  022030
034123  152030
024023  152030'

生産する:

03:40:23 05:20:30
03:40:23 02:21:30
04:40:23 01:20:30
03:42:23 02:20:30
03:41:23 15:20:30
02:40:23 15:20:30

1は他のスクリプト用です

#!/usr/bin/awk -f
gsub(/[0-9]{4}\>/,":&") &&
gsub(/:[0-9][0-9]/,"&:")

2.

#!/usr/bin/awk -f
gsub(/[0-9]{2}\B/,"&:")

三。

#!/usr/bin/awk -f
BEGIN{
    FS=OFS=""
}
/[0-9]{6}  [0-9]{6}/{
    $3=":"$3
    $4=$4":"
    $11=":"$11
    $12=$12":"
    print
}

4.

#!/usr/bin/awk -f
/[0-9]{6}  [0-9]{6}/{
    printf("%02d:%d:%s:%d:%d\n",
        substr($0,0,2),
        substr($0,3,2),
        substr($0,5,6),
        substr($0,11,2),
        substr($0,13,2))
}

答え2

これまで私が持っている最良の方法ですが、これが唯一の方法ではありません。

[root@virt03 test]# awk 'gsub(/[0-9][0-9]/,":&",$1) gsub(/[0-9][0-9]/,":&",$2)' lab1 | sed 's/://1' | sed 's/://3'
03:40:23 05:20:30
03:40:23 02:21:30
04:40:23 01:20:30
03:42:23 02:20:30
03:41:23 15:20:30
02:40:23 15:20:30
[root@virt03 test]# cat lab1
034023  052030
034023  022130
044023  012030
034223  022030
034123  152030
024023  152030
[root@virt03 test]#

関連情報