如何在Bash中同时去除字符串的前缀和后缀
同时去除字符串前缀
a_和后缀_b的方法 在bash环境中,你可以通过参数展开组合或者文本处理工具实现同时移除前缀和后缀,以下是几种实用方案:
方法1:纯bash参数展开(无需外部工具)
利用bash内置的参数展开特性,分步处理:先移除前缀a_,再对结果移除后缀_b。
for i in *; do trimmed=${i##a_} # 先剥离前缀a_ echo ${trimmed%_b} # 再剥离后缀_b done
执行后输出:
cat dog food
如果要写成一行命令:
for i in * ; do trimmed=${i##a_}; echo ${trimmed%_b}; done
方法2:使用sed工具批量替换
通过sed的多替换规则,一次性去掉开头的a_和结尾的_b:
for i in * ; do echo "$i" | sed -e 's/^a_//' -e 's/_b$//'; done
执行后输出同样为:
cat dog food
方法3:借助basename工具处理
通过两次调用basename命令,分别剥离后缀和前缀:
for i in * ; do echo $(basename $(basename "$i" _b) a_); done
输出结果与前两种方法一致。
内容的提问来源于stack exchange,提问作者Lolo
相关产品推荐
相关产品推荐

