我有大量的csv文件(> 50 GB),其中包含以下列: -
"时间","数据列"
时间栏的数据类似于" 2015-07-10 00:17:45.000 GMT"。我希望转换时间列以反映等效的纪元时间而不是人类可读的形式。
在不创建其他文件的情况下,最快的方法是什么? (这个csv文件最初是python脚本的输出)。
答案 0 :(得分:1)
date --date="2015-07-10 00:17:45.000 GMT" '+%s'
将打印
1436487465
您可以使用剪切来完成剩下的工作:
#!/bin/bash
while IFS='' read -r line || [[ -n $line ]]; do
timefield=$(echo "$line" | cut -f1 -d, | tr -d '"')
epochal=$(date --date="$timefield" '+%s')
restofline=$(echo "$line" | cut -f2- -d,)
echo "$epochal,$restofline"
done <$1
要使用上面的脚本,只需将其保存到文件中,然后将其命名为可执行文件,然后运行它,将文件名作为第一个参数读取。
所以使用inp.tst:
"2015-07-10 00:17:45.000 GMT","misc data","blah"
"2015-07-10 00:18:45.000 GMT","more data","misc"
您可以使用:
./fixtimes.sh inp.tst
获取
1436487465,"misc data","blah"
1436487525,"more data","misc"