用另一个文件的内容替换一行

时间:2013-05-01 15:48:54

标签: linux bash shell

我有问题。我想用另一个文件的内容替换文件的一行。

在我的第一个文件中,我有这一行:"#Content"我希望将其替换为文件content.xml的内容。

感谢。

2 个答案:

答案 0 :(得分: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内的文字。

请注意,必须将"包裹起来才能正常工作。

答案 1 :(得分:0)

这也可以起作用,效果不是很好 - 但对内容不敏感。

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

所以,catenate

  • FILE的第一部分(最多为#Content - (不包括))
  • 文件`content.xml
  • 文件的第二部分(从#Content - (不包括))