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

如何用sed查找并转换文件中的二进制数表示格式

问题分析与解决方法

错误原因

  • 你使用的正则[[:digit:]]\+\b匹配范围太宽泛:它会匹配所有连续数字序列+单词边界,文件开头的00018342和0000都是数字序列,后面的空格属于单词边界,因此被错误添加了%前缀。
  • 该正则没有定位到目标的二进制串11010101b:它只匹配纯数字串,未包含末尾的字母b,导致目标串完全没被处理。
  • 原命令没有处理末尾b的逻辑,自然无法删除这个后缀。

正确的原地修改命令

要精准匹配二进制数字(仅含0和1)加末尾b的模式,同时完成加%前缀和删b的操作,使用以下命令:

sed -i 's/\([01]\+\)b/%\1/g' test.txt

命令解释

  • \([01]\+\):捕获一个或多个连续的0/1字符(二进制数字),用括号分组后可通过\1引用该内容
  • b:匹配目标串末尾的字母b
  • %\1:将匹配到的[01]+b替换为%加上捕获到的二进制数字,自动去掉末尾的b
  • -i:实现文件的原地修改(注意:BSD系统下的sed需要写成-i '')

执行后,原行:

00018342 0000 dc.b 11010101b

会被修改为:

00018342 0000 dc.b %11010101

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 07:55:14