You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用sed定位D[0x000]并替换后续指定位置的十六进制数字

问题描述

原始输入行:

quipkgkulul,qyyio (avuip),Llo,tyiop :           D[0x000]:   0x00123400  0x00000000  0x00000000  0x00000000

需求:定位行中的D[0x000],对其冒号后的十六进制数做针对性替换,最终得到:

quipkgkulul,qyyio (avuip),Llo,tyiop :           D[0x000]:   0x00xxx00  0x000xxx0  0x00000000  0x00000000

此前尝试的命令未达到预期:

sed -E 's/[^[][a-zA-Z0-9][^]]//g' file
解决方案

使用以下sed命令可以实现需求:

sed -E '/D\[0x000\]/ {
    s/(0x00)[0-9a-fA-F]{3}(00)/\1xxx\2/
    s/(0x000)[0-9a-fA-F]{3}(0)/\1xxx\2/
}' file

命令解释

  • /D\[0x000\]/:仅对包含D[0x000]的行进行操作,避免误改其他行
  • 第一个替换规则:匹配第一个十六进制数的0x00前缀和00后缀,将中间3个十六进制字符替换为xxx
  • 第二个替换规则:匹配第二个十六进制数的0x000前缀和0后缀,将中间3个十六进制字符替换为xxx

执行后输出结果:

quipkgkulul,qyyio (avuip),Llo,tyiop :           D[0x000]:   0x00xxx00  0x000xxx0  0x00000000  0x00000000

内容的提问来源于stack exchange,提问作者vidya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 07:07:16