Bash - 使用另一个字符串查找并替换正则表达式

时间:2016-07-21 11:12:02

标签: regex bash parsing sed

我有以下字符串componentDidMount() { const tryNode1 = ReactDOM.findDOMNode(this.refs.foo); const tryNode2 = this.refs.foo; console.log(tryNode1); console.log(tryNode2); } ,我需要将libVersion = '1.23.45.6'替换为1.23.45.6

显然版本可以是格式相似的任何数字(不一定是4个数字)。

我尝试使用以下但不起作用

1.23.45.7

1 个答案:

答案 0 :(得分:2)

基本sed,即没有任何参数的sed使用BRE(基本正则表达式)。在BRE中,您必须转义+,以使正则表达式+的力量重复前一个令牌一次或多次,同样对于捕获组\(regex\)

echo "libVersion = '1.23.45.6'" | sed "s/[0-9.]\+/1.23.45.7/"

您也可以使用否定的char类来替换单引号中存在的所有字符。

echo "libVersion = '1.23.45.6'" | sed "s/'[^']*'/'1.23.45.7'/"

由于替换应该只发生一次,因此您不需要g全局修饰符。