<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.icc.id</groupId>
<artifactId>idp-parent</artifactId>
<version>7.0.1.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<artifactId>app</artifactId>
<packaging>war</packaging>
<name>${project.name} - Hello World Web App</name>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</dependency>
<dependency>
<groupId>com.icc.id</groupId>
<artifactId>solution-commons</artifactId>
<version>${com.icc.id.version}</version>
</dependency>
<dependency>
<groupId>com.icc.id</groupId>
<artifactId>application-common</artifactId>
<version>${com.icc.version}</version>
</dependency>
<dependency>
<groupId>com.icc.id</groupId>
<artifactId>framework-commons-hazelcast</artifactId>
<version>${com.icc.version}</version>
</dependency>
<dependency>
<groupId>com.icc.id</groupId>
<artifactId>framework-commons-health</artifactId>
<version>${com.icc.version}</version>
</dependency>
<dependency>
<groupId>com.icc.id</groupId>
<artifactId>framework-commons-rabbitmq</artifactId>
<version>${com.icc.version}</version>
</dependency>
<dependency>
<groupId>com.icc.id</groupId>
<artifactId>framework-commons-rest</artifactId>
<version>${com.icc.version}</version>
</dependency>
<dependency>
<groupId>com.icc.id</groupId>
<artifactId>framework-commons-security</artifactId>
<version>${com.icc.version}</version>
</dependency>
<dependency>
<groupId>com.icc.id</groupId>
<artifactId>framework-commons-system</artifactId>
<version>${com.icc.version}</version>
</dependency>
<dependency>
<groupId>com.icc.id</groupId>
<artifactId>framework-commons-web</artifactId>
<version>${com.icc.version}</version>
</dependency>
<dependency>
<groupId>com.icc.id</groupId>
<artifactId>platform-connector-cache</artifactId>
<version>${com.icc.version}</version>
</dependency>
<dependency>
<groupId>com.icc.id</groupId>
<artifactId>platform-connector-spring-remoting</artifactId>
<version>${com.icc.version}</version>
</dependency>
<dependency>
<groupId>com.icc.id</groupId>
<artifactId>platform-openid-connect</artifactId>
<version>${com.icc.version}</version>
</dependency>
<dependency>
<groupId>com.icc.id</groupId>
<artifactId>platform-rest-commons</artifactId>
<version>${com.icc.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<!-- The following log4j 1.2 bridge is needed to satisfy libraries that has runtime dependency on log4j 1.2. -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-tools</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
</dependency>
<dependency>
</project>
したがって、pom.xmlは次のようになります。したがって、要件は各行をスキャンしてcom.icc.idを検索することです。見つかった場合は、行n + 2にcom.icc.id.versionが含まれていない場合にのみ置換を実行する必要があります(バージョン行にcom.icc.idが含まれています)。バージョン) 。 com.icc.id.versionが含まれていない場合は、groupidをcom.uxpsystems.$1に置き換える必要があります(ここで$ 1はこのスクリプトに引数として渡されます)。その場合は、ブロックをスキップし、次の行にcomが含まれていることを確認してください。 .icc.ID
ベストアンサー1
$1
sedコマンドのrhsにデータ(を介して)を注入するため、s///
sedコードに挿入されたときにエラーが発生しないように正しく引用する必要があります。
注:すでに指摘したように、この問題を解決する正しい方法はxmlツールを使用することです。
$ v1_esc=$(printf '%s\n' "$1" | sed -e 's:[\/&]:\\&:g;$!s/$/\\/')
$ sed -e '
/com[.]icc[.]id/!b
$!N;$!N;/\n.*\n/!q
/.*\n.*\n.*com[.]icc[.]id[.]version/b
'"s/com[.]icc[.]id\\(.*\\n.*\\n\\)/com.uxpsystems.${var}\\1/"'
' pom.xml
説明する:
- 退屈な行をスキップしてそのまま印刷してください。
- 3つの行をつかみ、興味のある行から世紀を始めましょう。
- 3行をインポートするプロセスでは、すべての行が使用されます。これはeofに達してから終了し、パターンスペースをそのまま印刷することを意味します。
- ここまで来たらパターン空間に見てみるラインが3本あるという意味で
sed
、そのうち最初のラインが興味深いラインです。 - 3行目に指定された文字列com.icc.id.versionがない場合、3行のブロック処理はスキップされ、そのまま印刷されます。
- ここで意味するのは、最終的に正しい3行ブロックが検出され、必要な代替操作を実行する必要があることです。