我有一个名为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"
任何人都可以给我一个命令来执行此操作吗?
答案 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'选项。所以我不得不以另一种方式改写它。
但是上面的命令应该给你一般的想法。我对此进行了测试,它对我有用。