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

Shell脚本:如何提取下划线后的可变长度后缀字符串?

解决Shell脚本提取下划线后内容的问题

先纠正你命令里的几个关键错误:

  1. 变量赋值语法错误:不能直接写new_name=cat $input,必须用命令替换$(...)捕获命令输出后再赋值;
  2. cut命令参数缺失:用-d指定分隔符后,必须搭配-f明确要提取的字段范围,否则会触发你看到的错误;
  3. 多余的awk命令:你的输入是单个无空格字符串,awk '{print $1}'完全没必要。

下面提供几种高效的解决方法:

方法一:使用cut命令

直接指定下划线为分隔符,提取第2个字段及之后的所有内容:

input="Prefixname_SuffixName-123"
new_input=$(echo "$input" | cut -d'_' -f2-)

-f2-表示提取从第2个字段到最后的全部内容,即使后续字符串里还有下划线也能完整保留。

方法二:使用Shell内置参数扩展(推荐)

无需调用外部命令,利用Shell本身的参数扩展功能,效率更高:

input="Prefixname_SuffixName-123"
new_input="${input#*_}"

${input#*_}的作用是:从input变量开头,删除最短的匹配*_的部分(即第一个下划线及之前的所有内容),直接得到下划线后的剩余字符串。

方法三:使用awk命令

如果偏好awk,可通过替换操作提取目标内容:

input="Prefixname_SuffixName-123"
new_input=$(echo "$input" | awk -F'_' '{sub(/^[^_]+_/, ""); print}')

-F'_'指定下划线为分隔符,sub(/^[^_]+_/, "")会替换掉开头到第一个下划线的所有内容,最后打印处理后的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 20:40:10