代码缓慢的过程



您可以帮助改进此代码以更快..使用我的文件中的50000行,这需要很多时间。

感谢您的帮助

输入

17/11/27 03:13:50:480000
17/11/27 03:12:54:380000
17/11/27 03:14:39:980000

输出

1195787648480000
1195787592380000
1195787697980000

我的代码

ts=$(date -d'01/06/1980 00:00:00' +%s)
lap=18
cat file |
    while read tt 
    do 
    dt=`echo $tt | awk '{print $1}' | awk -F"/" '{print $2"/"$3"/"$1}'`
    tm=`echo $tt | awk '{print substr($2,1,8)}'`
    ms=`echo $tt | awk '{print $2}' | awk -F":" '{print $NF}'`
    line=`echo $dt" " $tm`
    echo $line $(date -d "${line/// }" "+%s") | 
    awk '{print (($3 - '$ts') + '$lap')'$ms'}' 
    done

请帮助我改进代码以更快地获得结果。

非常感谢。

带有单个gnu awk 进程:

awk -F'[[:space:]]*|/|:' -v ts=$(date -d'01/06/1980 00:00:00' +%s) -v lap=18 '{ 
     print (mktime(sprintf("20%d %d %d %d %d %d",$1,$2,$3,$4,$5,$6)) - ts)+lap $NF 
}' file

输出:

1195791248480000
1195791192380000
1195791297980000

享受)

gawk

相似
$ awk -F'[/: ]' -v ts=$(date -d'01/06/1980' +%s)  
                -v lap=18 '{ms=$NF; $NF=""; d=sprintf(20$0); 
                            print mktime(d)+lap-ts ms}' file
1195787648480000
1195787592380000
1195787697980000

最新更新