我想创建一个bash脚本来将现有版本号更新为给定的版本号
代码中的版本号为:
test_1_2_3_456
模式将是
test_#_#_#_###
我想通过像
这样的bash参数替换它7_0_0_123
赦免将是
/my_script 7_0_0_123
在my_script中,它可以找到模式并替换为7_0_0_123
答案 0 :(得分:1)
我认为这会对你有所帮助:
new=7_0_0_123
echo test_1_2_3_456 | sed -E 's/test_[0-9]_[0-9]_[0-9]_[0-9]{3}/test_'$new'/'
test_7_0_0_123
with:
-E:将正则表达式解释为扩展(现代)正则表达式而不是基本常规
[0-9]
匹配1位
[0-9]{3}
匹配3位数字(不能少于更多)'$new'
您要使用的新字符串答案 1 :(得分:1)
你可以用更紧凑的方式写出来
$ echo test_1_2_3_456 | sed -r 's/(test)(_[0-9]){4}[0-9]{2}/\1_7_0_0_123/'
test_7_0_0_123
说明:匹配模式" test"然后是4份" _"然后是单个数字和2个附加数字,替换为第一个分组匹配(即" test")和所需的版本号。这消除了对正则表达式功能的重复"测试",需要-r
选项。
答案 2 :(得分:0)
使用GNU var collection = _database.GetCollection<BsonDocument>("clicks");
:
sed
示例:
sed -r 's/^test_[0-9]_[0-9]_[0-9]_[0-9]{3}$/7_0_0_123/' file.txt