【发布时间】:2013-05-02 03:19:00
【问题描述】:
我有问题。我想用另一个文件的内容替换一个文件的一行。
在我的第一个文件中,我有这一行:"#Content",我想将其替换为文件 content.xml 的内容。
谢谢。
【问题讨论】:
我有问题。我想用另一个文件的内容替换一个文件的一行。
在我的第一个文件中,我有这一行:"#Content",我想将其替换为文件 content.xml 的内容。
谢谢。
【问题讨论】:
这可以工作:
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 中的文本替换。
请注意,它必须用" 包裹才能工作。
【讨论】:
sed: 1: "minimize": invalid command code m。我在osx下运行
cat content.xml | sed 's/[^-A-Za-z0-9_]/\\&/g' 逃脱它们。
unescaped newline inside substitute pattern。我测试了new=$(cat $file | sed 's/[^-A-Za-z0-9_]/\\&/g' | sed 's/\n/\\&/g'),但它失败了。
这也可以,但不是很有效 - 但对内容不敏感。
cat <(sed '/#Content/,$d' < FILE ) content.xml <(sed '1,/#Content/d' < FILE) > NEWFILE
所以,连接
【讨论】: