使用通配符搜索替换Sed

时间:2020-03-12 14:05:01

标签: bash scripting git-bash

你好,我是脚本的新手,有以下问题

我需要替换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...**

1 个答案:

答案 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
相关问题