我正在尝试查找由于夏令时(开始或结束)而具有不正确时区的数据时间戳。如果时区不正确,我想将其替换为这些比赛的正确时区。
例如 2024-03-10T00:15:00-07:00 = 2024-03-10T00:15:00-08:00
我想出了以下正则表达式,并且能够使用 grep 找到文件中的罪魁祸首:
grep -E '~2024-03-10T[01]{2}:[0-9]{2}:[0-9]{2}-07:00' <filename>
我正在尝试使用 sed 和我想出的正则表达式进行替换,但我似乎无法让它正常工作。
这是我目前拥有的:
sed 's/\(~2024-03-10T[01]{2}:[0-9]{2}:[0-9]{2}\)-07:00~/\1-08:00~/g' filename
我错过了什么?该命令似乎没有进行任何替换。任何帮助,将不胜感激!预先感谢!
设置:
$ cat filename
~2024-03-09T00:15:00-07:00~ some text
~2024-03-10T00:15:00-07:00~ some text
~2024-03-11T00:15:00-07:00~ some text
我倾向于使用
-E
来启用对扩展正则表达式的支持并简化捕获组语法。
这只需要对当前代码进行一些小的更改:
sed -E 's/(~2024-03-10T[01]{2}:[0-9]{2}:[0-9]{2})-07:00/\1-08:00/g' filename
^^ ^ ^
地点:
-E
- 启用对扩展正则表达式的支持(
| )
- 无需转义括号(捕获组分隔符)这会生成:
~2024-03-09T00:15:00-07:00~ some text
~2024-03-10T00:15:00-08:00~ some text
~2024-03-11T00:15:00-07:00~ some text