我正在尋找一個比通常的查找/替換通過sed稍微複雜的東西寫一個bash腳本。我有一本名爲bash Cookbook的書,我一直試圖從中收集一些靈感,但我並沒有走得太遠。Bash腳本從一行復制並用副本替換另一行
基本上我試圖編寫一個腳本來自動更新一堆maven pom.xml文件中的版本號。下面是我在看的一般設置:
<!-- TEMPLATE:BEGIN
<version>@@[email protected]@</version>
-->
<version>1.0.0</version>
<!-- TEMPLATE:END -->
運行腳本(使用新的版本號1.0.1)後,我想該文件,而不是閱讀:
<!-- TEMPLATE:BEGIN
<version>@@[email protected]@</version>
-->
<version>1.0.1</version>
<!-- TEMPLATE:END -->
所以這將在實際發佈pom文件中,1.0.0是當前版本(我試圖用1.0.1或其他版本替換它)。顯然,版本號將會改變,所以沒有一個好的方法來做一個查找/替換(因爲你想找的東西是可變的)。我希望能夠寫一個bash腳本可以
- 與實際的版本號
- 取代@@ VERSION @@刪除當前版本線
- 寫就行了更新版本前行模板:END(?而在文件中保存@@ VERSION @@ - 可能借模板出來到一個臨時文件,做更換,然後再做到這一點)
我可以排序做的其中一些(寫出一個新的文件,做repl acement)使用Ant腳本一拉
<replace file="pom.xml">
<replacefilter token="@@[email protected]@" value="${version}"/>
</replace>
但我不知道是什麼方式的最佳途徑。)與舊版本或b。刪除線)告訴它的新行復制在正確的位置是。任何人都知道如何做到這一點或有任何建議?
什麼是你想要的輸出看?你的描述有些模棱兩可。 –
(a)使用您的VCS替代這些(b)XSL(c)利潤 – sehe
爲清晰起見編輯。 – matt5784