我必须完成一个相对简单的任务,基本上我有文件的大量使用以下格式疑惑
“2014年1月27日”,“七点20分38秒”,”数据“,”数据“,”数据“
基本上我想提取前2个字段,将它们转换为unix时代日期,将6小时添加到它(由于时区差异),并将前2个原始列结果为毫秒(unix时代,因为19700101转换为工厂) 我写了一个脚本,工作正常,好吧,问题是非常非常慢,我需要运行这个超过150个文件,总行数为超过5.000.000,我很奇怪g如果你有,我怎么能使其更快任何建议,那就是:
#!/bin/bash
function format()
{
while read line; do
entire_date=$(echo ${line} | cut -d"," -f1-2);
trimmed_date=$(echo ${entire_date} | sed 's/"//g;s/,/ /g');
seconds=$(date -d "${trimmed_date} + 6 hours" +%s);
millis=$((${seconds} * 1000));
echo ${line} | sed "s/$entire_date/\"$millis\"/g" >> "output"
done < $*
}
format $*
Unix纪元是秒,而不是毫秒。它通常是一个(长整数)整数,但是具有小数部分的表示法已被用于表示亚秒精度。 – tripleee
您应该使用'“$ @”'而不是'$ *'。您的代码目前无法处理其中包含空格的文件名等。 – tripleee