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

如何用gsar/sed命令行替换指定词为十六进制值且跳过引号内内容

命令行实现引号外文本十六进制替换方案

优先方案:gsar.exe 实现

gsar原生支持分隔符区间跳过、大小写不敏感匹配、十六进制替换,不需要复杂正则,单命令即可满足需求:

gsar.exe -i -x -sAAAA -rA5 -d0x22 -o target.txt

参数说明:

  • -i:开启大小写不敏感匹配,自动覆盖AAAA/Aaaa/AaAa等所有大小写变体
  • -x:启用十六进制解析模式,替换值按十六进制编码处理
  • -sAAAA:指定要匹配的目标关键词
  • -rA5:指定替换值为十六进制0xA5,对应示例中的XXXX
  • -d0x22:将ASCII 0x22(双引号)设为区间分隔符,自动跳过成对分隔符包裹区间内的所有匹配项,正好满足引号内不替换的要求
  • -o:直接将修改写回原文件,如需输出到新文件,改为-o output.txt即可

备选方案:Windows 版 GNU sed 实现

如果没有gsar,也可以用Windows平台移植的GNU sed实现,通过正则优先捕获引号内内容并保留,再替换外部匹配项:

sed -i -E "s/(\"[^\"]*\")|[aA]{4}/\1\xA5/gI" target.txt

参数说明:

  • -i:直接修改原文件
  • -E:启用扩展正则
  • 正则逻辑:优先匹配所有双引号包裹的内容并捕获到分组1,替换时用\1原封不动放回;对引号外的连续4个a/A字符(即任意大小写的AAAA),替换为十六进制0xA5
  • gI:全局匹配+大小写不敏感匹配

效果验证

使用提供的测试样例验证,两种方案的输出均符合预期:

原文本:9023 AAAA "this is a AAAA" "AAAA" "*:;AAAA'" Aaaa " Because AAAA" " aaaa " AaAa
输出结果:9023 [0xA5] "this is a AAAA" "AAAA" "*:;AAAA'" [0xA5] " Because AAAA" " aaaa " [0xA5]
引号内的3处AAAA全部保留未替换,引号外的3处不同大小写的目标词全部替换为0xA5。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:57:22