Bash 使用通配符搜索替换Sed

Bash 使用通配符搜索替换Sed,bash,scripting,git-bash,Bash,Scripting,Git Bash,您好,我对脚本编写有点陌生,有以下问题 我需要替换20069.1216.0 HintPath..\packages\String.20069.1216.0\lib\net\Thoo.Tkc.dll/HintPath 如果将20069.1216.0替换为以2美元提供的任何内容,则此功能可以正常工作 `xargs sed -i 's/String.20.........0/String.'"${2}"'/g'` 我需要一种sed搜索**String.*\lib\net\“**的方法,其中**Str

您好,我对脚本编写有点陌生,有以下问题

我需要替换20069.1216.0

HintPath..\packages\String.20069.1216.0\lib\net\Thoo.Tkc.dll/HintPath

如果将20069.1216.0替换为以2美元提供的任何内容,则此功能可以正常工作

`xargs sed -i 's/String.20.........0/String.'"${2}"'/g'`
我需要一种sed搜索
**String.*\lib\net\“**
的方法,其中
**String.*
**\lib…**
之间的任何内容都是通配符

这就是我尝试过的

sed-i的/String.\/String.“${2}”'/g'
sed-i的/String.\\/String.“${2}”'/g'

sed-i的/String.\(.*)\/String.“${2}”/g'

我假设您在函数内调用
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

我假设您在函数中调用
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

使用WinDoze\everywhere,但
Thoo.Tkc.dll/HintPath
。这是故意的吗?我使用bash编辑用.net编写的程序的文件,该路径与使用WinDoze\everywhere的路径类似,但
Thoo.Tkc.dll/HintPath
。这是故意的吗?我用bash编辑用.net编写的程序的文件,该路径是一个类似的路径Hello如果有时它看起来像这个字符串怎么办?20069.1216.0--SNAPSHOT“我的搜索需要包括--SNAPSHOT并替换它,如果有时它看起来像这个字符串怎么办?20069.1216.0--SNAPSHOT”我的搜索需要包括--SNAPSHOT并替换它