从键值文件中提取版本并在单个命令中替换html文件

时间:2015-12-27 16:17:26

标签: linux bash sed grep

我有一个名为configuration.xml的配置文件,其结构如下:

version = "1.0.0"
...

我想读取文件的版本并在名为template.html的html文件中替换占位符(#VERSION#),该文件具有以下结构:

<div> version: #VERSION# </div>

我尝试过使用grep和sed并分别成功完成了这个2操作,但无法将它们组合在一起。以下是我的2个命令:

grep -Po "(?<=^version ).*" configuration.conf |cut -d "=" -f 2 | cut -d "\"" -f 2)

sed -i "s/#VERSION#/${ver1}/g" "template.html"

任何人都可以给我一个命令来执行此操作吗?

2 个答案:

答案 0 :(得分:1)

只需将第一个命令结果保存到varibale。

ver1=$(grep -Po '^version\s*=\s*"\K[^"]*' configuration.conf)
sed -i "s/#VERSION#/$ver1/g" template.html

单一命令就是,

sed -i "s/#VERSION#/$(grep -Po '^version\s*=\s*"\K[^"]*' configuration.conf)/g" template.html

答案 1 :(得分:0)

grep '^version' configuration.conf | grep -o '\".*\"' | tr -d '\n\"' | xargs -0 -I {} sed 's/#VERSION#/{}/g' 'template.html'

P.S.-你提供的grep命令在我的mac上无效,因为它无法理解'-P'选项。所以我不得不以另一种方式改写它。

但是上面的命令应该给你一般的想法。我对此进行了测试,它对我有用。