【发布时间】:2014-12-31 12:44:25
【问题描述】:
如果变量匹配模式,我正在尝试使用 Bash 替换来替换变量中的整个字符串。例如:
pattern="ABCD"
${var/pattern/}
删除(替换为空)$pattern 在$var 中的第一次出现
${var#pattern}
删除$var开头的$pattern
但是如何从$var 中删除正则表达式模式"^ABCD$"?我可以:
if [ $var == "ABCD" ] ; then
echo "This is a match." # or whatever replacement
fi
但这正是我想要的。
【问题讨论】:
-
"${var/$pattern/}"有什么问题?你能用一些示例输入来澄清一下吗? -
@anubhava 他正在寻找完全锚定的替代品。在任何地方都能找到匹配项。
-
我想不出比
if声明更好的东西了。[ "$var" = ABCD ] && var=""稍微简洁一些,但想法相同。 -
@etan 和@fedorgui 它对我有用。出于好奇,我将把它打开一段时间,看看是否有其他解决方案。谢谢大家。
-
请注意,您的前两个示例不会修改
$var- 它们扩展为来自$var并具有相应更改的字符串,但$var本身保持不变 - 稍后的实例的$var不会受到影响。
标签: regex bash variables replace