我试图用这个expression式来插入一个文本文件的内容到一个给定的string后。 这是一个简单的bash脚本:
TEXT=`cat file1.txt` sed -i "/teststring/a \ $TEXT" file2.txt
这会返回一个错误“sed:-e expression#1,char 37:unknown command:`M'”
问题在于file1.txt的内容实际上是一个私人证书,所以这是一个大量的文本和不寻常的字符,这似乎是造成问题。 如果我用一个简单的ASCII值replace$ TEXT,它会工作,但是当它读取file1.txt的大内容时,会失败,并显示错误。
有什么办法来执行这个行动? 我的语法与sed或我的报价位置错误?
使用r来读取证书文件,而不是一个附加的string – sed是困惑,因为你首先需要逃避string中的换行符和特殊字符来追加。 您不需要转义文件中的任何文本 – sed只是读取并追加它。
sed -i "/teststring/r file1.txt" file2.txt
我会用ed编辑器。 这就像vi但命令行。
例:
$ echo foobar > /tmp/orig $ cat > /tmp/add << EOF > blablabla > blablabla > blablabla > EOF $ printf "/foobar\nr /tmp/add\nwq\n" | ed /tmp/orig 7 foobar 30 37 $ cat /tmp/orig foobar blablabla blablabla blablabla