Awk 如何拆分以二进制分隔的二进制文件?

Awk 如何拆分以二进制分隔的二进制文件?,awk,Awk,我试图用一个二进制分隔符分割一个二进制文件…但是awk对我不满意。。。有人知道我做错了什么吗 awk '/\x7c\x7c/{n++}{print >"out" n ".bin" }' input.bin 这导致: awk: syntax error at source line 1 context is /\x7c\x7c/{n++}{print >"out" >>> n <<< ".bin" } awk: illegal sta

我试图用一个二进制分隔符分割一个二进制文件…但是awk对我不满意。。。有人知道我做错了什么吗

awk '/\x7c\x7c/{n++}{print >"out" n ".bin" }' input.bin
这导致:

awk: syntax error at source line 1
 context is
    /\x7c\x7c/{n++}{print >"out" >>>  n <<<  ".bin" }
awk: illegal statement at source line 1

这导致文件数量正确,但部分数据丢失。拆分文件的总文件大小小于原始文件(2.2KB源文件的总大小为108字节)。所以肯定不对。

很简单,只需将文件名包装在
()

括号是必需的,因为
awk
没有任何显式连接运算符。因此,我们需要告诉
awk
,从
这里到那里
的任何内容都必须连接起来


有关更多信息,请通过设置“记录分隔符”参考以下拆分,因此应适用于非常大的文件(假设“记录”不太大):


该错误消息来自于
右侧缺少参数@null。。。声明,但您不会从GNU awk中得到这个错误,awk是一个处理文本文件的工具,而不是二进制文件,我知道gawk是唯一一个可以处理二进制文件的awk,但要使其工作,您需要设置BINMODE。看看GNUAWK手册。
awk 'BEGIN { RS=""; FS=/\x7c\x7c/ } { for (i = 1; i <= NF; i++) print $i > i }' input.bin
awk '/\x7c\x7c/{n++}{print > ( "out" n ".bin" ) }' input 
awk 'BEGIN{ FS="\x00"; RS="\\|\\|"; n=0; }
     { n++; print >> "out" n ".bin" }'