我正在尝试使用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
答案 0 :(得分:0)
请参见Treatment of backslashes across shells:
只需将每个
\\
替换为\
,以告诉外壳程序“我想要一个字面意义上的$
”
您需要对反斜杠进行转义,因为它充当双引号中的转义字符,例如,表示插入插值var的gitconfig
字符。