Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 用另一个文件的内容替换一行_Linux_Bash_Shell - Fatal编程技术网

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

Linux 用另一个文件的内容替换一行,linux,bash,shell,Linux,Bash,Shell,我有个问题。我想用另一个文件的内容替换文件的一行 在我的第一个文件中有一行:“#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\u new\u text。然后sed执行以下工作:-

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

在我的第一个文件中有一行:
“#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\u new\u text
。然后sed执行以下工作:
-i
表示文件中的替换,查找
#内容
,并用
$your_new_text
中的文本替换


请注意,它必须用
包装才能工作。

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

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

cat我有一个错误
sed:1:“最小化”:无效的命令代码m
。我在OSX下运行,从您的答案中可以看出(这应该在您的问题中),问题是您的content.xml文件有一些受保护的字符。使用info,我们可以
cat content.xml | sed's/[^-A-Za-z0-9|]/\\&/g'
来转义它们。谢谢,但是“换行符”不是转义。我有一个错误:
替换模式中未转义的换行符。
我测试了
new=$(cat$file | sed's/[^-A-Za-z0-9\]/\\\&/g''sed's/\n/\\&/g')
,但它失败了。