2017-08-01 11 views
0

私は効果的に2つのプロジェクトを持っているプロジェクトを持っています。 「子」Mavenプロジェクトで、私は、親プロジェクトでバージョンを参照する性質を持っている:XMLコンテンツを正規表現とSEDに置き換える

<myparent.project.version>15.0.0-SNAPSHOT</myparent.project.version> 

私が何をしようとしている一緒にいくつかの一般的なコマンドbashスクリプトである、すなわち、リリースブランチを作成するときにI親のMavenプロジェクトの1つを作成して、子Mavenの親プロジェクトを更新したいが、この値を更新する方法が不足している:

私は作業ラインに沿って何かを得ることを望んでいる:newVersion = 16.0.0

$ sed -i "s/\<myparent.project.version\>[0-9.]+-SNAPSHOT\<\/myparent.project.version\>/<myparent.project.version>$newVersion-SNAPSHOT<\/myparent.project.version>/g" pom.xml 

https://regex101.com/で正規表現(\<myparent.project.version\>[0-9.]+-SNAPSHOT\<\/myparent.project.version\>)をチェックしていて、pom.xmlファイルで置き換えたい行と一致しますが、何らかの理由でsedが正しく動作することができません。

アイデア?

答えて

1

XMLStarletのようなxmlパーサーを使用する必要があります。 <>\<\>のために使用されている\.ではなく:\+とドット:あなたが一つ以上の数量詞をエスケープする必要があり

sed "s/<myparent\.project\.version>[0-9.]\+-SNAPSHOT<\/myparent\.project\.version>/<myparent.project.version>$newVersion-SNAPSHOT<\/myparent.project.version>/g" file 

:それは、単純な置換のために、あなたはSEDこのGNUを試すことができます、と述べましたGNU sedとの単語境界)

+1

これは、完璧なおかげで... –

関連する問題