Text-Processing

如何在對匹配搜尋模式的值執行操作時就地編輯文件?

  • March 22, 2013

給定一個列表文件,其中包含隨機文本和許多 ISO 格式的日期時間(例如“2012-07-02T10:47:24+02:00”),我怎樣才能找到所有這些日期時間並為每個日期時間添加 2 小時?理想情況下,考慮到一天是 24 小時這一事實的解決方案會很好(即“02T23:15 + 2”應該導致“03T01:15”而不是“02T25:15”)但在我的情況下這不是大不了。讓我們忽略可能的時區後果,並將其視為簡單的數學運算。

例如,我已經知道如何在 Python 中執行此操作,逐行讀取所有文件並在找到日期時間時替換該行,但我想知道是否有更直接的方法來執行此操作,可能使用 awk 或 sed ?

謝謝!

這更像是一份工作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...

引用自:https://unix.stackexchange.com/questions/68816