从所有文件替换字符串

时间:2018-08-14 18:26:13

标签: bash shell

我正在尝试查找所有CONFIG.INF文件,并将特定属性更改为特定属性。

CONFIG.INF文件如下所示:

NAME: A
VERSION: 1.2.0.X
TOPIC: X

我想读取此类文件,并替换每个文件的version属性的最后一部分。

find ${WORKSPACE} -name CONFIG.INF -type f -exec sed -i.bak "s/VERSION:.*/VERSION: ${VERSION}/g" {} \;

这将替换完整版本,但我只希望替换版本的最后一部分。根据示例,如果我替换为Y,版本将为1.2.0.Y。最后一部分可以是任何内容(不一定是X),我只想替换最后一部分。

1 个答案:

答案 0 :(得分:2)

您可以

sed -i.bak "s/VERSION:.*\./&${VERSION_LETTER}/g"

与字符串“ VERSION:”匹配,后跟尽可能多的字符,直到最后点。

替换部分包含魔术字符&,其替换为与正则表达式匹配的文本,后跟包含新版本字母的变量。