我正在尝试使用此表达式在给定字符串之后将一个文本文件的内容插入到另一个文本文件中。这是一个简单的 bash 脚本:
TEXT=`cat file1.txt`
sed -i "/teststring/a \
$TEXT" file2.txt
Run Code Online (Sandbox Code Playgroud)
这将返回错误,“sed:-e 表达式 #1,字符 37:未知命令:`M'”
问题在于 file1.txt 的内容实际上是一个私有证书,因此它包含大量文本和异常字符,这似乎导致了问题。如果我用一个简单的 ASCII 值替换 $TEXT ,它可以工作,但是当它读取 file1.txt 的大量内容时,它会因该错误而失败。
有什么方法可以执行此操作吗?我的语法是否与 sed 或我的引用位置错误有关?
使用 r 读取证书文件,而不是使用 a 来附加字符串——sed 很困惑,因为您首先需要对要附加的字符串中的换行符和特殊字符进行转义。您不需要对文件中的任何文本进行转义—— sed 只是读取并附加它。
sed -i "/teststring/r file1.txt" file2.txt
Run Code Online (Sandbox Code Playgroud)