bsd sed替换文件中的十六进制值

时间:2013-10-04 00:47:58

标签: sed hex bsd

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

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

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

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

1 个答案:

答案 0 :(得分: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是十六进制转储程序。