sed从文件开头剥离十六进制,包括模式

sed从文件开头剥离十六进制,包括模式,sed,Sed,今天下午大部分时间我都在用sed进行黑客攻击,这有点像雷区 我有一个十六进制格式的文件: 485454502F312E31203230300D0A0D0AFFD8FFE000104A46494600 我在0d0a0a上进行模式匹配,并成功地将文件开头的内容删除到那里。问题是它留下了0D0A0D0A,因此我必须进行第二次传递才能拾取它 在一个命令中,是否有方法删除您匹配的模式并将其保存回同一文件 提前谢谢 ID您需要更好地描述您的问题 根据您编写的内容,您可以使用sed的-i开关(就地编辑文件)

今天下午大部分时间我都在用
sed
进行黑客攻击,这有点像雷区

我有一个十六进制格式的文件:

485454502F312E31203230300D0A0D0AFFD8FFE000104A46494600
我在
0d0a0a
上进行模式匹配,并成功地将文件开头的内容删除到那里。问题是它留下了
0D0A0D0A
,因此我必须进行第二次传递才能拾取它

在一个命令中,是否有方法删除您匹配的模式并将其保存回同一文件

提前谢谢


ID

您需要更好地描述您的问题

根据您编写的内容,您可以使用sed的
-i
开关(就地编辑文件)保存更改的文件:

sed -i.bak 's/^.*0D0A0D0A//' file
PS:在posix和一些旧版本的sed上没有可用的
-i
开关。如果是这种情况,请这样使用:

sed 's/^.*0D0A0D0A//' file > _temp && mv _temp file
这应该起作用:

sed -e 's/.*0D0A0D0A//' file.txt

-i
不是posix。但是,感谢您将我指向选项的
后缀
参数。我还没有投票,因为我目前不知道你的命令将如何解决这个问题。OP希望在一次运行中删除行。。(我无法想象为什么会失败,他只是提供了不足的输入,这就是为什么我没有在这里回答)没错@hek2mgl我将在我的问题中对此发表评论。谢谢。或多或少地,我得到了上面的答案。但是会将其包装在脚本中,以将临时文件重命名回原始文件名。谢谢。我主要是用那个。只需要从stdout重定向。