2013-05-01 80 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
  • 文件的第二部分(从 - 到内容 - (不包括))
相关问题