たとえば、行 n+2 (バージョン行に com.icc.id.version が含まれている) の場合、com.icc.id を "abc" に置き換えます。それ以外の場合は交換しないでください。これは、「共通」フォルダのすべてのサブディレクトリにあるすべてのpomファイルに対して機能します。
<groupId>com.icc.id</groupId>
<artifactId>abc</artifactId>
<version>${project.version}</version>
<groupId>com.icc.id</groupId>
<artifactId>ifd</artifactId>
<version>${com.icc.id.version}</version>
ベストアンサー1
これは必要以上のものですが、後で記録としてより多くのタスクを実行するのに役立ちます。
$ cat tst.awk
BEGIN { numLines = 3 }
{
lineNr = (NR - 1) % numLines + 1
rec[lineNr] = $0
}
lineNr == numLines {
if ( rec[3] ~ /com\.icc\.id\.version/ ) {
sub(/com\.icc\.id/,"abc",rec[1])
}
for (lineNr=1; lineNr<=numLines; lineNr++) {
print rec[lineNr]
}
delete rec
}
$ awk -f tst.awk file
(groupId)com.icc.id(/groupId)
(artifactId)abc(/artifactId)
(version)${project.version}(/version)
(groupId)abc(/groupId)
(artifactId)ifd(/artifactId)
(version)${com.icc.id.version}(/version)
すべてのサブディレクトリのすべての「.pom」ファイルに対してこれを行うには、「pomファイル」にこのような拡張子があり、次にGNU awkを使用するとします-i inplace
。
find . -name '*.pom' -exec awk -i inplace -f tst.awk {} +