3

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

在我的第一个文件中,我有这一行:"#Content"我想用文件的内容替换它content.xml

谢谢。

4

2 回答 2

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

请注意,它必须被包裹起来"才能工作。

于 2013-05-01T15:50:26.890 回答
1

这也可以工作,不是很有效 - 但对内容不敏感。

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

所以,连接

  • FILE 的第一部分(直到 #Content -(不包括))
  • 文件`content.xml
  • 文件的第二部分(从到#Content -(不包括))
于 2013-05-01T19:19:00.577 回答