我有一個文件pom.xml
,它需要附加SNAPSHOT
的版本。有時,SNAPSHOT
丟失,導致構建失敗。我試圖用SNAPSHOT
替換它,如果它不存在。如何在替換多行文本時第一次出現時停止
實際:
<artifactId>package1</artifactId>
<version>1.0.0</version>
期望:
<artifactId>package1</artifactId>
<version>1.0.0-SNAPSHOT</version>
由於artifactId
不會是跨所有項目一樣,我試圖以搜索開始從</artifactId>
到</version>
模式並用添加到其中的SNAPSHOT
文本替換它。這導致將文字替換爲pom.xml
中可用的最後一個version
。
我已經試過如下:
cat pom.xml | sed ':a;N;$!ba;1,/<\/artifactId>/s/<\/artifactId><version>[0-9]*.[0-9]*.[0-9]*<\/version>/<\/artifactId><version>1.0.0-SNAPSHOT<\/version>/g'
(不工作,因爲它是無法找到行的末尾)。
cat common-pom.xml | sed ':a;N;$!ba;0,/<\/artifactId>/s/<\/artifactId>.*<\/version>/<\/artifactId><version>0.0.0-SNAPSHOT<\/version>/g'
(能夠做到的變化,但它替換的所有文本,直到在pom.xml
可最後version
)。
如何停止替換爲多行替換中的第一次出現?
其實,讓你從只是讓上線換人以''? –
由於pom.xml中有這麼多,只需要在一個地方完成替換,我無法替換所有這些文件。 –
@ jonathan-lefflet,我確實經歷了你提到的問題。我趕上了需要明確處理的額外行。我無法完成。請重新考慮downvote,因爲我的問題與上面提到的略有不同。 –