Bash 如何找到给定格式的版本号并替换为新的版本号
我想制作一个bash脚本,将现有的版本号更新为给定的版本号 代码中的版本号为:Bash 如何找到给定格式的版本号并替换为新的版本号,bash,sed,Bash,Sed,我想制作一个bash脚本,将现有的版本号更新为给定的版本号 代码中的版本号为: test_1_2_3_456 这种模式将是 test_#_#_#_### 我想通过bash参数将其替换为一个新的 7_0_0_123 附件是 /my_script 7_0_0_123 在我的脚本中,它可以找到模式并替换为7_0_0_123我认为这将帮助您: 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_1_2_3_456
这种模式将是
test_#_#_#_###
我想通过bash参数将其替换为一个新的
7_0_0_123
附件是
/my_script 7_0_0_123
在我的脚本中,它可以找到模式并替换为7_0_0_123我认为这将帮助您:
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
与:
- -E:将正则表达式解释为扩展(现代)正则表达式,而不是基本正则表达式
匹配1位数字[0-9]
匹配3位数字(不少于不多于)[0-9]{3}
要使用的新字符串“$new”
- 我认为这将有助于您:
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
与:
- -E:将正则表达式解释为扩展(现代)正则表达式,而不是基本正则表达式
匹配1位数字[0-9]
匹配3位数字(不少于不多于)[0-9]{3}
要使用的新字符串“$new”
sed
:
sed -r 's/^test_[0-9]_[0-9]_[0-9]_[0-9]{3}$/7_0_0_123/' file.txt
示例:
% sed -r 's/^test_[0-9]_[0-9]_[0-9]_[0-9]{3}$/7_0_0_123/' <<<'test_1_2_3_456'
7_0_0_123
%sed-r/^test[0-9][0-9][0-9][0-9]{3}$/7\u 0\u 0\u 123/'与GNUsed
:
sed -r 's/^test_[0-9]_[0-9]_[0-9]_[0-9]{3}$/7_0_0_123/' file.txt
示例:
% sed -r 's/^test_[0-9]_[0-9]_[0-9]_[0-9]{3}$/7_0_0_123/' <<<'test_1_2_3_456'
7_0_0_123
%sed-r的/^test[0-9][0-9][0-9][0-9]{3}$/7\u 0\u 0\u 123/'您可以用更简洁的方式编写它
$ 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份“u”,然后是单个数字和2个附加数字,替换为第一组匹配(即“test”)和所需的版本号。这消除了重复的“测试”,需要正则表达式功能的-r
选项。您可以用更简洁的方式编写它
$ 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份“u”,然后是单个数字和2个附加数字,替换为第一组匹配(即“test”)和所需的版本号。这消除了重复的“测试”,需要对正则表达式功能使用-r
选项。我认为@AvinashRaj的意思是:到目前为止你尝试了什么?我认为@AvinashRaj的意思是:到目前为止你尝试了什么?虽然这段代码可以回答这个问题,提供关于该代码为什么和/或如何回答该问题的附加上下文将显著提高其长期价值。请在您的回答中添加一些解释。虽然此代码可能会回答此问题,但提供有关此代码为什么和/或如何回答此问题的其他上下文将显著提高其长期价值。请在您的回答中添加一些解释。