我想修改一个带有模式的二进制文件。我已经用xxd (来自包vim)将文件转换为一个普通的十六进制文件。普通文件如下所示(只有1行没有尾随LF):
$ xxd -ps file.bin | tr -d '\n' | tee out.txt
3a0a5354...我希望删除与sed原始文件中的\x01[^\xFF]*\xFF匹配的所有模式(一个开始令牌和一个关闭令牌以及它们之间的所有东西,除了另一个结束令牌),但是不是这样工作的。
示例输入和所需匹配:
020202020101010101feeffeefff0000...
~~~~~~~~~~~~~~~~~~~~ 我正考虑这么做
sed 's/regex//g' in.file > out.file现在,我试图匹配所有的聊天字符2乘2,而不包括有什么想法吗?
发布于 2017-08-24 15:21:42
这应该能起作用:
((..)|01([0-9a-e][0-9a-f]|[0-9a-f][0-9a-e])*ff)*
也就是说,我们匹配一对十六进制数字,其中第一个或第二个数字可以是f,但不能两者都是。在周围的上下文中,我们还必须一次匹配所有两个字符,以确保我们的匹配从偶数开始。
显然,您必须添加一些实际上从输出中移除内部组的内容,这是regex引擎特有的。我只是在发了这篇文章之后才意识到,简单的s/不会做。
https://stackoverflow.com/questions/45863598
复制相似问题