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

如何用sed/awk动态将逗号后的非零数字替换为布尔值1?

问题需求

需要把文本里逗号后面的非零数字(不管位数多少)全部替换成布尔值1,只有逗号后是单个0的情况不做替换。

输入示例

DA:74,0
DA:75,0
DA:79,3 < NON BOOLEAN
DA:80,3 < NON BOOLEAN
DA:81,3 < NON BOOLEAN
DA:82,4 < NON BOOLEAN
DA:83,1

之前用的命令是sed 's/,[1-999]/,1/g',但手动指定数字范围太死板,没法覆盖所有位数的非零数字。

期望输出

DA:74,0
DA:75,0
DA:79,1
DA:80,1
DA:81,1
DA:82,1
DA:83,1

额外测试用例(这些都要替换成1)

DA:108,23
DA:110,101
DA:111,098
DA:112,100

解决方案

直接用这条sed命令就能搞定:

sed 's/,\(0*[1-9][0-9]*\)/,1/g'

命令说明

正则表达式,\(0*[1-9][0-9]*\)会精准匹配逗号后面的所有非零数字场景:

  • 单个非零数字(比如,3、,1)
  • 任意长度的多位数(比如,23、,101)
  • 开头带0的多位数(比如,098、,100)

只要不是逗号后面只有一个0,都会被匹配替换成,1,完美符合需求。

测试验证

用额外测试用例验证:
输入:

DA:108,23
DA:110,101
DA:111,098
DA:112,100

执行命令后输出:

DA:108,1
DA:110,1
DA:111,1
DA:112,1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:47:52