在我的日志文件中,时间格式为2014-10-10 HH:MM:SS:sss
我正在从文件中读取时间和日期,并将其转换为秒以进行进一步处理。但是日期错误给了错误。可能是因为时间不是..SS.sss格式。

while read line;
do
 d1=$(echo $line | cut -d, -f2);
case "$line" in \s*) continue ;; esac
t1=$(echo $line | cut -d, -f3);
d1t1="${d1} ${t1}";
echo "$d1t1";
ds1=$(date -d"$d1t1" "+%s");
echo "$ds1";
done < error.log


我想将“:”替换为“。”解决问题的方法是什么?

最佳答案

为什么不简单地在日志文件中替换毫秒分隔符?

perl -p -i -e 's/:(\d{3}),/.\1/g' error.log


以毫秒为单位的':'分隔符错误,并且date命令会抱怨该错误。带有“。”分隔符日期命令将成功。

更新:
该命令是一个“ perl内联程序”:它将全局(每行)将文本更改应用于文件(在这种情况下为“ error.log”)。
此处的change命令是regular expression替代:s/:(\d{3}),/.\1/g,表示:“用每个冒号后接3位数和一个逗号加点和数字代替”。

10-06 07:11
查看更多