用 SED 替换文件中的字符串

用 SED 替换文件中的字符串

文件内容如下:

<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <url>https://host.com/path/another-path/stable-1.630/update-center.json</url>
  </site>
</sites>

我尝试了以下方法:

sed -i '' -e "s/stable-\d+.\d+/stable-2.233/g" ${FILE_PATH}

本质上,我的目的是替换“stable-”后面的版本号。然而,它似乎并没有取代文本。

答案1

一种方法可能是让您的正则表达式对版本号不那么“挑剔”。人们可以假设您正在搜索的字符串是stable-后跟任意数量的非斜杠字符的字符串。然而,由于这个正则表达式本身将包含斜杠,因此使用分隔符变得很方便其他而非表达式/本身sed。此示例用作的命令的%分隔符:seds

sed -i '' -e "s%stable-[^/]*%stable-2.233%g" ${FILE_PATH}

相关内容