2013-05-01 75 views

回答

3

這可以工作:

your_new_text=$(cat content.xml | sed 's/[^-A-Za-z0-9_]/\\&/g') 
sed -i "s/#Content/$your_new_text/" your_file 

它把文本從content.xml在變量$your_new_text。然後sed完成工作:-i代表文件中的替換,查找#Content並用$your_new_text中的文本替換。

請注意,它必須包裝"工作。

+0

我有錯誤'sed:1:「最小化」:無效的命令代碼m'。我運行在osx – jeremieca 2013-05-01 16:04:58

+1

從我在你的答案中看到的(它應該在你的問題中,但是),問題是你的content.xml文件有一些受保護的字符。使用http://stackoverflow.com/a/5329148/1983854信息,我們可以'cat content.xml | sed's/[^ - A-Za-z0-9 _]/\'&/ g''來逃避它們。 – fedorqui 2013-05-01 16:07:11

+0

謝謝,但「換行符」不是逃避。我有這個錯誤:'替換模式內的換行符'。我測試'new = $(cat $ file | sed's/[^ - A-Za-z0-9 _]/\\&g'| sed's/\ n/\\&g')'但它失敗了。 – jeremieca 2013-05-01 17:28:17

0

這也可以工作,不是很有效 - 但對內容不敏感。

cat <(sed '/#Content/,$d' < FILE) content.xml <(sed '1,/#Content/d' < FILE) > NEWFILE 

所以,鏈狀

  • 文件的第一部分(最多#內容 - (不包括在內))
  • 文件'的content.xml
  • 文件的第二部分(從 - 到內容 - (不包括))
相關問題