我有一个大文件,其条目格式为
20|27.10.2017 19:51:35.764000|354949
20|28.10.2017 17:44:37.095000|863925
20|31.10.2017 09:00:47.578000|438836
中间的条目表示日期(欧洲格式)和时间。
我想用以下内容代替
20|2|354949
20|3|863925
20|6|438836
并将其存储在新文件中, 现在,中间的条目表示(例如)2017年10月25日至日期之间的天数。
让问题更清楚:
我想替换表格
的日期时间条目28.10.2017 17:44:37.095000
乘以2017年10月25日至(在此示例中)2017年10月28日之间的天数,例如(在此示例中)3。
任何人都可以给我一个有关如何有效执行此操作的提示(该文件有大约1500百万个条目...)
谢谢!
答案 0 :(得分:2)
awk
来营救!
$ awk 'BEGIN {FS=OFS="|"; base=mktime("2017 10 25 00 00 00")}
{split($2,t,"[. :]");
secs=mktime(t[3]" "t[2]" "t[1]" "t[4]" "t[5]" "t[6])-base
$2=int(secs/(60*60*24))}1' file
20|2|354949
20|3|863925
20|6|438836
将日期/时间和基线转换为秒,进行比较并转换为天。