使用 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,因此您可能会遇到字符问题,但基 native 制有效:
$ 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
是一个十六进制转储程序。
关于sed - bsd sed 替换文件中的十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19171415/