我试图使用sed
来替换时间戳中的纳秒:
sed -r "s/(([0-9]{2}:){2}[0-9]{2}.[0-9]{3})[0-9]*/1/g"
例:
echo "2019-07-15 19:12:26.327801+00" | sed -r "s/(([0-9]{2}:){2}[0-9]{2}.[0-9]{3})[0-9]*/1/g"
在我的机器上本地工作,并产生2019-07-15 19:12:26.327+00
作为输出。但是,当我在其他地方运行它时,我会2019-07-15 1+00
作为输出。似乎我的捕获组 1 没有插值。
关于如何解决此问题的任何建议?
sed --version
GNU sed version 4.2.1
请参阅跨 shell 的反斜杠处理:
只需将每个
替换为
\
,即可告诉外壳"这是我想要的一字">
您需要转义反斜杠,因为它在双引号中充当转义字符,例如,对于表示内插变量的$
字符。