你好,我是脚本的新手,有以下问题
我需要替换20069.1216.0
HintPath..\packages\String.20069.1216.0\lib\net\Thoo.Tkc.dll/HintPath
在用$ 2中提供的任何内容替换20069.1216.0时,此方法很好用
`xargs sed -i 's/String.20.........0/String.'"${2}"'/g'`
我需要sed搜索**"String.*\lib\net\"**
和**String.**
之间的任何通配符的方法
这是我尝试过的
**\lib...**
答案 0 :(得分:0)
我假设您在函数内调用sed
。
因此,请尝试以下代码:
#!/bin/bash
replace() {
echo 'HintPath..\packages\String.20069.1216.0\lib\net\Thoo.Tkc.dll/HintPath' |\
sed "s/String\.[0-9.]*/String\.${2}/"
}
replace dont_care filename
如果您的路径中可能包含--SNAPSHOT
,则此解决方案应适用于您:
#!/bin/bash
replace() {
echo 'HintPath..\packages\String.20069.1216.0--SNAPSHOT\lib\net\Thoo.Tkc.dll/HintPath' |\
sed "s/String[0-9.]*\(--SNAPSHOT\)\{0,1\}/String\.${2}/"
}
replace dont_care filename