単一のシェルスクリプト内のpom.xmlファイルから複数のバージョン番号を変更しようとしていますが、コンポーネントのバージョン番号がわからないことがあります。私はバージョンを解析することはできますが、そのバージョンをインラインで置き換えることはできません。awk/sedを使ってインラインでXMLを解析/置換する
のpom.xmlは、このようなものになります。
...
<dependency>
<groupId>abc.efg</groupId>
<artifactId>service1</artifactId>
<version>0.0.10</version>
</dependency>
<dependency>
<groupId>abc.efg</groupId>
<artifactId>service2</artifactId>
<version>0.1.5</version>
</dependency>
<dependency>
<groupId>abc.efg</groupId>
<artifactId>service3</artifactId>
<version>0.0.1</version>
</dependency>
...
を私はこれは少しずさんである場合ので、私を許してシェルスクリプトに完全に新しいんだけど、これはこれまで私は次のようにgrepのを架線サービスバージョンを引くことができます;
$ grep -A 1 "service1" pom.xml | grep -Eo '[.0-9]*'
$ 0.0.10
が、インラインを置き換えるためのawkを使用すると、私が探している
$ grep -A 1 "service" pom.xml | grep -Eo '[.0-9]*' | sed 's/[,0-9]/3.2.1/g'
$ 3.2.1.3.2.1.3.2.1
出力がある挑戦証明されています
0.0.10 - > 3.2.1
$ grep -A 1 "service" pom.xml | grep -Eo '[.0-9]*' | #sedsyntax
$ 3.2.1
この時点でアドバイスや指針があれば幸いです
XML/HTMLパーサ(xmllint、xmlstarletを...)を使用します。 – Cyrus