给定一个包含随机文本和许多 ISO 格式的日期时间的列表文件(例如“2012-07-02T10:47:24+02:00”),我如何找到所有这些日期时间并为每个日期时间添加 2 小时?理想情况下,考虑到一天是 24 小时这一事实的解决方案会很棒(即“02T23:15 + 2”应该导致“03T01:15”而不是“02T25:15”),但就我而言,这不是一个有什么大不了的。让我们忽略可能的时区后果,并将其视为一个简单的数学运算。
例如,我已经知道如何在 Python 中执行此操作,逐行读取所有文件并在找到日期时间时替换该行,但我想知道是否有更直接的方法来执行此操作,可能使用 awk 或 sed ?
谢谢!
答案1
这更像是一份工作perl
:
perl -MTime::Piece -pi -e 's/\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d/
(Time::Piece->strptime($&,"%Y-%m-%dT%T")+2*3600)->datetime/ge' file1 file2...