我有一个大型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脚本做得更好,但仅仅是出于学习目的,我想知道为什么这不起作用。
答案 0 :(得分: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