使用通配符搜索替换 Sed
Search Replace Sed using wild card
您好,我是脚本编写新手,遇到以下问题
我需要更换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.'""'/g'`
我需要一种方法让 sed 搜索 **"String.*\lib\net\"**
,其中 **String.**
和 **\lib...**
之间的任何内容都是通配符
这是我试过的
sed -i 's/String.*\/String.'""'/g'
sed -i 's/String.*\/String.'""'/g'
sed -i 's/String.\(.*\)\/String.'""'/g'
我假设您在函数内部调用 sed
。
所以试试这个代码:
#!/bin/bash
replace() {
echo 'HintPath..\packages\String.20069.1216.0\lib\net\Thoo.Tkc.dll/HintPath' |\
sed "s/String\.[0-9.]*/String\./"
}
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\./"
}
replace dont_care filename
您好,我是脚本编写新手,遇到以下问题
我需要更换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.'""'/g'`
我需要一种方法让 sed 搜索 **"String.*\lib\net\"**
,其中 **String.**
和 **\lib...**
之间的任何内容都是通配符
这是我试过的
sed -i 's/String.*\/String.'""'/g'
sed -i 's/String.*\/String.'""'/g'
sed -i 's/String.\(.*\)\/String.'""'/g'
我假设您在函数内部调用 sed
。
所以试试这个代码:
#!/bin/bash
replace() {
echo 'HintPath..\packages\String.20069.1216.0\lib\net\Thoo.Tkc.dll/HintPath' |\
sed "s/String\.[0-9.]*/String\./"
}
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\./"
}
replace dont_care filename