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

Shell中如何基于分隔符获取变量内指定单词的索引位置

更简洁的实现方案

方案1:awk单行实现(最简短,无需额外变量)

直接一行命令即可输出结果,完全替代你现有代码:

awk -v d="$delimiter" -v w="$word" 'BEGIN{FS=d}{for(i=1;i<=NF;i++)if($i~"^"w){print i-1;exit}}' <<< "$line"

说明:

  • 通过-v参数将shell变量传入awk,将字段分隔符FS设为指定的分隔符
  • 遍历所有字段,匹配到以目标单词开头的字段后,直接输出i-1(awk字段默认从1计数,减1对应0起始索引),匹配到第一个结果就退出,效率高

方案2:纯bash精简写法

保留bash原生语法,比你原有写法缩短近一半:

IFS="$delimiter" read -ra arr <<< "$line"
for i in "${!arr[@]}"; do [[ ${arr[i]} == $word* ]] && { echo $i; break; }; done

说明:

  • 直接用数组下标遍历语法${!arr[@]},不需要手动维护index计数变量
  • 用逻辑与&&替代if分支,代码更紧凑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:39:02