次のXMLがあります。
<artifactId>myproject</artifactId>
<version>1.14.0-SNAPSHOT</version>
バージョンを抽出したいです1.14.0-SNAPSHOT
。つまり、2つのgrepとパイプを使用してこれを行う方法を知っています。
$ grep -A1 "<artifactId>myproject</artifactId>" pom.xml | grep -Eo "\d+.\d+.\d+-SNAPSHOT"
2つを1つにまとめるにはどうすればよいですか?これにawkまたはsedを使用する方が良いでしょうか?
ベストアンサー1
<version>
次の行以降に確実であればmyproject
sed -n '
\|<artifactId>myproject</artifactId>|{
n #get next line
s|[[:blank:]]*</\?version>[[:blank:]]*||gp #remove tags and print
}
' pom.xml
またはあなたが持っているなら正規表現
grep -zoP '<artifactId>myproject</artifactId>\s*\n\s*<version>\K[^<]+' pom.xml