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

如何使用sed或awk移除内部无逗号的花括号?

移除不含逗号的花括号(sed/awk实现)

需求说明

处理字符串:

ex00/{ft_strdup.c} ex04/{ft_convert_base.c,ft_convert_base2.c} ex05/{ft_split.c}

移除其中内部不含逗号的花括号,保留含逗号的花括号,最终输出:

ex00/ft_strdup.c ex04/{ft_convert_base.c,ft_convert_base2.c} ex05/ft_split.c

用sed实现

使用扩展正则表达式进行全局替换:

sed -E 's/\{([^,}]+)\}/\1/g' <<< "ex00/{ft_strdup.c} ex04/{ft_convert_base.c,ft_convert_base2.c} ex05/{ft_split.c}"
  • 正则解释:
    • \{ 匹配左花括号
    • ([^,}]+) 捕获花括号内不含逗号和右花括号的内容(即内部无逗号的情况)
    • \} 匹配右花括号
    • \1 用捕获到的内容替换整个{...}结构
    • g 全局替换所有符合条件的匹配项

用awk实现

借助gsub函数完成全局替换:

awk '{gsub(/\{([^,}]+)\}/,"\1"); print}' <<< "ex00/{ft_strdup.c} ex04/{ft_convert_base.c,ft_convert_base2.c} ex05/{ft_split.c}"
  • 逻辑说明:
    • gsub(regex, replacement, target) 对目标字符串(默认是$0)执行全局正则替换
    • 正则规则与sed一致,仅保留内部含逗号的花括号结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:36:18