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)
问题出在 base64 编码中,base64 的 -w 0 选项解决了这个问题。
cat ./sample.xml | base64 -w 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3116 次 |
| 最近记录: |