我有一个4GB的JSON文件,其中有多个Date字段。"Date"的格式为2021-10-15T06:02:50.455Z
。我想用简单的日期和时间替换这种格式,如2021-10-15T06:02:50
是否有办法我可以做到这一点与sed命令sed -e 's/[1-9][0-9]{3}-[0-9]{2}-[0-1][0-9]T[0-3][0-9]:[0-9]{2}:[0-9]{2}.[0-9]{3}Z/magic_here/g' test.json
我期待着Linus脚本,但节点或python也工作。
PS: regex is working fine
这看起来像是零长度断言可能有用的任务,请考虑python
中的以下示例:
import re
txt = "something 2021-10-15T06:02:50.455Z something"
clean = re.sub(r'(?<=dddd-dd-ddTdd:dd:dd).d+Z','',txt)
print(clean)
输出something 2021-10-15T06:02:50 something
解释:只需删除.d+Z
,它位于描述您想要保留的日期时间部分的模式之后。请注意,我使用了所谓的原始字符串来简化转义,请参阅re
模块文档以了解进一步的讨论。注意,.
需要间隔,因为它表示文字点。d
表示任意数字。这个解决方案可以重新设计到任何支持正面向后看断言的regex工具。
一个简单的sed
是
sed -Ei 's/(T[0-9]{2}:[0-9]{2}:[0-9]{2})[.][0-9]{3}Z/1/g' file