从字符串和二进制的混合文件中提取字符串

use*_*394 3 shell-script text-processing

我正在尝试将我的诺基亚备份文件转换为可接受的 vcard 格式。它具有出现在二进制数据之间的有效 vcard 字符串。例如:

!@#JUNKCHARACTERS!@#!@BEGIN:VCARD
VERSION:2.1
N:Jimmy;;;;
TEL;VOICE:4445551212
END:VCARD!@#JUNKCHARACTERS!@#!@
Run Code Online (Sandbox Code Playgroud)

我一直在使用十六进制编辑器来进行一些查找和替换,但即使如此也很乏味。我可以使用 grep 或其他一些命令行工具来提取BEGIN:VCARD和之间的所有字符串END:VCARD吗?

Vit*_* Py 6

如果我太天真,我很抱歉,但你不能:

strings binary-file > binary-strings-output.txt
Run Code Online (Sandbox Code Playgroud)

然后对字符串输出进行后期处理?沿着以下路线:

awk '/BEGIN:VCARD/,$NF ~ /END:VCARD/' binary-strings-output.txt
Run Code Online (Sandbox Code Playgroud)