我有一个大文件,其中包含以下格式的时间戳:
UrlFetchApp
我想在所有与该特定表达式匹配的出现处添加双引号。我正在尝试使用sed,但似乎无法找到正确的命令。我正在尝试以下方法:
2018-08-22T13:06:04.442774Z
我非常确定问题出在我的“替换”表达式上。
我应该如何纠正命令?
谢谢。
答案 0 :(得分:1)
您应将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
答案 1 :(得分:1)
以下作品:
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\)/"\1"/g' my_file.json
多次修改:
\(
和\)
创建一个组(在替换部分中由'\ 1`引用)