使用 GNU Sed 我可以使用以下命令替换一些十六进制值
gsed 's/.*\xFF\xD8/\xFF\xD8/g' myfile
我在 OSX 上,所以默认sed
是 BSD 的。不幸的是,前面的命令对 BSD 不起作用sed
。
知道为什么这样做以及如何做我正在寻找的东西:删除文件中 FFD8 值之前的所有内容。
处理该问题的最简单方法是使用bash
' ANSI-C Quoting'机制:
sed $'s/.*\xFF\xD8/\xFF\xD8/g' myfile
请注意,\xFF\xD8 不是有效的 UTF-8,因此您可能会遇到字符问题,但基本机制有效:
$ echo sed $'s/.*\xFF\xD8/\xFF\xD8/g' | odx
0x0000: 73 65 64 20 73 2F 2E 2A FF D8 2F FF D8 2F 67 0A sed s/.*../../g.
0x0010:
$
odx
是一个十六进制转储程序。