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

如何在Shell脚本中移除字符串末尾的连字符与下划线(无需sed/awk)

移除字符串末尾连字符/下划线的Shell兼容方案

不需要依赖sed、awk这类外部工具,用POSIX标准的Shell参数扩展就能实现,所有Linux发行版的默认Shell(bash、dash、sh等)都支持。

实现方法

使用${变量名%%[-_]*}语法:

  • %%:删除变量值末尾最长匹配指定模式的内容
  • [-_]*:匹配模式,[-_]代表字符集(包含-和_),*匹配该字符集的任意多个重复(会把末尾所有连续的-/_都匹配到)

示例代码

# 定义测试字符串
str1="test_-"
str2="test-_-""
str3="test1__-"
str4="---___"

# 处理并输出结果
echo "${str1%%[-_]*}"  # 输出 test
echo "${str2%%[-_]*}"  # 输出 test
echo "${str3%%[-_]*}"  # 输出 test1
echo "${str4%%[-_]*}"  # 输出空字符串(全是目标字符的情况)

兼容性说明

这个语法是POSIX Shell的标准特性,所有符合POSIX规范的Shell环境都支持,覆盖了几乎所有Linux发行版的默认Shell,不需要额外安装任何工具,完全原生实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:18:50