Awk 代码中的慢进程
您能否帮助改进此代码以使其更快。。我的文件中有50000行,这需要很多时间 我感谢你的帮助 输入 输出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
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循环来处理文本,你就有了错误的方法。看见