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

如何在Bash中删除字符串末尾的连续指定分号?

解决方案

你原本的sed命令仅匹配单个行尾分号,给匹配规则添加连续量词即可一次删除所有末尾分号,以下是几种常用实现方案:


方法1:sed单步实现(无需重复执行)

扩展正则写法

sed -E 's/;+$//'
  • -E 开启扩展正则支持
  • ;+ 匹配1个及以上连续的分号
  • $ 锚定匹配到行尾

兼容基础正则写法

sed 's/;*$//'

;* 匹配0个及以上连续分号,就算行尾没有分号也不会修改原内容,兼容性更强。

测试示例:

i="Item1;Item2;Item3;;;;;;;;"
echo "$i" | sed 's/;*$//'
# 输出:Item1;Item2;Item3

方法2:Bash原生参数扩展(最高效,无外部进程调用)

如果是处理Bash变量,用内置操作性能最优,不需要创建子进程调用外部工具:

  1. 开启extglob扩展匹配(多数发行版默认已开启,未开启可手动执行):
    shopt -s extglob
  2. 直接删除变量末尾所有连续分号:
    i=${i%%+(;)}

测试示例:

shopt -s extglob
i="Item1;Item2;Item3;;;;;;;;"
i=${i%%+(;)}
echo "$i"
# 输出:Item1;Item2;Item3

方法3:awk实现

awk '{sub(/;*$/, "")}1'

测试示例:

i="Item1;Item2;Item3;;;;;;;;"
echo "$i" | awk '{sub(/;*$/, "")}1'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:48:03