![Linux 命令 sed 中的正则表达式给出未终止的 's' 命令错误](https://linux22.com/image/216011/Linux%20%E5%91%BD%E4%BB%A4%20sed%20%E4%B8%AD%E7%9A%84%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%BB%99%E5%87%BA%E6%9C%AA%E7%BB%88%E6%AD%A2%E7%9A%84%20's'%20%E5%91%BD%E4%BB%A4%E9%94%99%E8%AF%AF.png)
当我使用 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/
可选地跟随限定符,例如g
、i
、p
等。您已经有了s/pattern/p
,所以没有替代品。
您还应该意识到您正在使用扩展正则表达式 (ERE) 模式,但您没有告诉sed
您正在这样做,因此它假定是普通的正则表达式。用于sed -E
此。