Linux 命令 sed 中的正则表达式给出未终止的 's' 命令错误

Linux 命令 sed 中的正则表达式给出未终止的 's' 命令错误

当我使用 bash 脚本运行以下 sed 表达式时

t=$(sed -n "s/^([0-9]+\.){2,2}(\*|[0-9]+)(\-.*){0,1}$/p" ./apps/core-website/settings/website.config)

它给出以下错误:

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

答案1

错误消息是正确的,您尚未终止s//命令。该模式后面应该s/pattern/replacement/可选地跟随限定符,例如gip等。您已经有了s/pattern/p,所以没有替代品。

您还应该意识到您正在使用扩展正则表达式 (ERE) 模式,但您没有告诉sed您正在这样做,因此它假定是普通的正则表达式。用于sed -E此。

相关内容