我有一个文件,该文件将二进制文件附加到bash脚本(在本例中为ISO)。它最终被拆开,执行bash脚本以安装ISO。 bash脚本以唯一的字符串结尾; “ 数据”,脚本在执行期间会删除该行上方(包括该行)的所有内容。
但是,它不会删除终止的新行,这意味着新文件(应该只是二进制ISO数据)以换行符开头,从而破坏了ISO。
删除数据的正则表达式如下
sed -re '1,/^__DATA__$/d'
使用cat -e
查看文件我正在尝试匹配并删除$
之后的__DATA__$
#cat -et file.bin
echo "I: Installation finished!"$
exit 0$
$
__DATA__$
$
3<ED>M-^PM-^PM-^PM-^PM-^
答案 0 :(得分:1)
我建议使用
sed -n '/__DATA__/{n;:1;n;p;b1}' file
在这里,-n
禁止显示行的默认输出,然后找到包含__DATA__
的第一行,然后将一行读入模式空间,然后读取并打印所有后续行。因此,我们跳过文件__DATA__
前一行和下一行的一部分。
s='#cat -et file.bin
echo "I: Installation finished!"
exit 0
__DATA__
3<ED>M-^PM-^PM-^PM-^PM-^'
sed -n '/__DATA__/{n;:1;n;p;b1}' <<< "$s"
输出:
3<ED>M-^PM-^PM-^PM-^PM-^