gpt4 book ai didi

regex - sed 在时间戳周围添加引号

转载 作者:行者123 更新时间:2023-11-29 09:50:08 26 4
gpt4 key购买 nike

我有一个大文件,其中包含以下格式的时间戳:

2018-08-22T13:06:04.442774Z

我想在所有匹配此特定表达式的事件周围添加双引号。我正在尝试使用 sed,但我似乎无法找到正确的命令。我正在围绕这些行尝试一些事情:

sed -e s/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}T[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}.[0-9]\{6\}Z/"$0"/g my_file.json

我很确定问题出在我的“替换”表达式上。

我应该如何更正命令?

提前谢谢你。

最佳答案

您应该将 sed 替换命令用单引号括起来,并使用 & 而不是 RHS 中的 $0 来替换整个匹配项:

sed 's/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}T[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}\.[0-9]\{6\}Z/"&"/g' file > outfile

参见 online demo

此外,如果您想匹配一个点而不是任何字符,请不要忘记转义 . 字符。

如果您使用 ERE 语法,您还可以删除过多的转义符:

sed -E 's/[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{6}Z/"&"/g'

如果你想change the file inline , 使用 -i 选项,

sed -i 's/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}T[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}\.[0-9]\{6\}Z/"&"/g' file

关于regex - sed 在时间戳周围添加引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53007635/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com