Awk 代码中的慢进程

Awk 代码中的慢进程,awk,Awk,您能否帮助改进此代码以使其更快。。我的文件中有50000行,这需要很多时间 我感谢你的帮助 输入 输出 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

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

我感谢你的帮助

输入

输出

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


享受)

单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

类似于
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

请用适当的标签标记您的问题,例如您正在使用的语言使用较少的awk
calls。另一个选项是,它是专门为处理大文件而设计的。任何时候,只要你编写一个shell循环来处理文本,你就有了错误的方法。请参见请使用适当的标记标记您的问题,例如您正在使用的语言使用较少的
awk
呼叫。另一个选项是,它是专门为处理大文件而设计的。任何时候,只要你编写一个shell循环来处理文本,你就有了错误的方法。看见