2

使用 GNU Sed 我可以使用以下命令替换一些十六进制值

gsed 's/.*\xFF\xD8/\xFF\xD8/g' myfile

我在 OSX 上,所以默认sed是 BSD 的。不幸的是,前面的命令对 BSD 不起作用sed

知道为什么这样做以及如何做我正在寻找的东西:删除文件中 FFD8 值之前的所有内容。

4

1 回答 1

2

处理该问题的最简单方法是使用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是一个十六进制转储程序。

于 2013-10-04T03:48:16.220 回答