sed中没有未命令的's'命令[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sed中没有未命令的's'命令[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

下面的命令正在一个简单的bash脚本中使用,以获取mysql 5.7中的临时密码。

vzctl exec $VEID 'defaultpass=$(cat /var/log/mysqld.log | grep "A temporary password is generated for" | tail -1 | sed -n 's/.*root@localhost: //p')'

但是,当我运行测试命令时,它会说以下内容:

sed: -e expression #1, char 19: unterminated `s' command

有人可以解释一下我到底做错了什么。我绝不是专家,但我认为这是正确的。我也试过替换'with',但是没有用。没有错误,但是$ defaultpass然后返回空。

后续:遗憾的是,当我使用双引号时,如pii_ke所述,变量的输出为空/空白。所以这不起作用。也许这里有别的错了?

答案

由于vzctl命令的整个第三个参数引用了单引号。你应该将sed命令放在双引号内:

vzctl exec $VEID 'defaultpass=$(cat /var/log/mysqld.log | grep "A temporary password is generated for" | tail -1 | sed -n "s/.*root@localhost: //p")'

以上是关于sed中没有未命令的's'命令[重复]的主要内容,如果未能解决你的问题,请参考以下文章

sed:-e expression#1,char 40:unterminated`s'命令

linux中sed命令删除单词

如何在Unix下使用sed命令

linux shell sed命令的问题!

sed命令中如何讲一个特殊字符(比如"")替换为换行符?

linux 特殊符号怎样用sed替换