我正在尝试在 Mac 上使用 sed 查找和替换一个或多个出现的字符,sed 来自 BSD 通用命令。
我尝试:
echo "foobar" | sed -e "s/o+//g
期待看到:
fbar
但是我看到了
foobar
我当然可以手动扩展加号:
echo "foobar" | sed -e "s/oo*//g"
但是我需要做什么才能使加号正常工作?
最佳答案
使用 /g
标志,s/o//g
足以替换所有出现的 o。
为什么 +
没有按预期工作: 在旧的、过时的 re +
中是一个普通字符(以及 |
, ?
).您应该将 -E
标志指定给 sed
以使其使用现代正则表达式:
echo "foobar" | sed -E -e "s/o+//"
# fbar
来源:man 7 re_format
。
关于regex - 如何在 mac os x (BSD) sed 上转义加号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4453760/