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

在Bash中如何删除字符串固定后缀"-input"以获取前置部分内容

解决方案

方法1:sed 替换(兼容性最好)

直接匹配到带-input后缀的字符串后,把末尾的固定后缀替换为空即可,适配所有POSIX标准的环境,不需要依赖GNU扩展:

# 匹配所有带-input后缀的字符串,删除末尾的-input
grep -oh "[[:alnum:]-]*-input" automatization_test.sh | sed 's/-input$//'

这里用[[:alnum:]-]*匹配前缀部分的字母、数字、横杠,适配你动态前缀的需求,不管前缀是什么格式,只要后缀是-input都会被正确剔除。

方法2:GNU grep 正向预查(写法最简洁)

如果你的环境用的是GNU grep(绝大多数Linux发行版默认带),可以直接用Perl正则的正向预查语法,一步匹配到-input前面的内容:

grep -ohP "[[:alnum:]-]+(?=-input)" automatization_test.sh

(?=-input)是正向预查断言,只会匹配后面紧跟-input的内容,不会把-input本身纳入匹配结果,一步就得到你要的前缀。

原命令出错原因

你原来的第二个grep -o "\-input\w*"是专门匹配-input开头的内容,所以输出的就是你要去掉的后缀部分,和你的需求刚好反过来了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:09:02