我有一个二进制文件,格式如下:
文件 04550525023506346054(....)6464563463634634634436346的 8badcafe 268664363463463463463463463464647(....)47401749741742的 8badcafe 34376362623626(....)262
我需要将它分成多个文件(使用awk),如下所示:
file1的
045505250235063460546464563463634634634436346file2的
8badcafe 26866436346346346346346346346464747401749741742
file3的
8badcafe 34376362623626262
我在stackoverflow上找到了以下行:
cat file | awk -v RS =" \ x8b \ xad \ xca \ xfe" ' NR> 1 {print RS $ 0> "文件" (NR-1);关闭("文件"(NR-1))}'
它适用于所有文件,但第一个。 实际上,我没有创建我调用file1的文件,因为它不是从捕获器8badcafe开始的。 如何修复上一个命令行以获得我需要的输出? 谢谢!
答案 0 :(得分:0)
尝试:
awk '{gsub(/8badcafe/,"\n&");num=split($0, a,"\n");for(i=1;i<=num;i++){print a[i] > "file"++e}}' Input_file
替换字符串&#34; 8badcafe&#34;到一个新的行和字符串的值。然后将当前行拆分为名为a的数组,其字段分隔符为新行。然后在数组中遍历所有值并将它们逐个打印到file1,file2 ....和&#34; file&#34;以及一个名为e。
的递增计数变量输出文件如下:
cat file1
045505250235063460546464563463634634634436346
cat file2
8badcafe26866436346346346346346346346464747401749741742
cat file3
8badcafe34376362623626262