1

我有一个大的 CSV 文件,其中的日期存储为 YYYY-MM-DD。我需要将这些转换为时间戳。为了转换,我假设所有日期的时间都是中午。

我正在尝试使用 gawk 脚本,例如

gawk '{
    print gensub(/([0-9]{4})-([0-9]{2})-([0-9]{2})/, mktime("\\1 \\2 \\3 12 0 0"), "g");
}' file.csv

但由于某种原因,mktime 总是返回 -1 的值。我知道我可以用 Python 脚本做得更好,但只是为了学习目的,我想知道为什么这不起作用。

4

1 回答 1

3

你很接近,试试这个:

awk '{
print  mktime(gensub(/([0-9]{4})-([0-9]{2})-([0-9]{2})/, "\\1 \\2 \\3 12 0 0", "g")); 
}'   

例子:

kent$  echo "2008-10-31"|awk '{
print    mktime(gensub(/([0-9]{4})-([0-9]{2})-([0-9]{2})/, "\\1 \\2 \\3 12 0 0", "g")); 
}'   
1225450800
于 2013-07-05T21:48:45.183 回答