使用通配符搜索替换 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