如何将base64编码的内容传递给sed?

use*_*778 7 bash shell base64 sed

变量XFILEBASE64有base64编码的内容,我想用base64内容替换一些字符串.

当然base64包含特殊字符,我已经尝试$'\ 001'作为分隔符,仍然收到错误消息.有什么建议?

XFILEBASE64=`cat ./sample.xml | base64`
cat ./template.xml  | sed "s$'\001'<Doc>###%DOCDATA%###<\/Doc>$'\001'<Doc>${XFILEBASE64}<\/Doc>$'\001'g"
> sed: -e expression #1, char 256: unterminated `s' command
Run Code Online (Sandbox Code Playgroud)

编辑:看起来问题与sed无关,它必须隐藏在base64操作中.

sample.xml中

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<a>testsdfasdfasdfasfasdfdasfdads</a>     
Run Code Online (Sandbox Code Playgroud)

重现问题:

foo=`base64 ./sample.xml`
echo $foo | base64 --decode

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<base64: invalid input
Run Code Online (Sandbox Code Playgroud)

use*_*778 7

问题出在 base64 编码中,base64 的 -w 0 选项解决了这个问题。

cat ./sample.xml | base64 -w 0
Run Code Online (Sandbox Code Playgroud)