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

如何使用BASH扩展过滤数组中不匹配指定前缀的元素

Bash数组过滤保留指定前缀元素解决方案

问题描述

需要移除数组中所有不匹配指定前缀的元素,仅保留匹配前缀的项,示例场景如下:
现有数组:

array=(elem1:a elem1:b elem2:a elem2:b)
prefix=elem1:

期望处理后得到的新数组为 (elem1:a elem1:b)。

解决方案

推荐使用纯Bash内置逻辑实现,无需调用外部命令,兼容性和性能更优:

# 遍历原数组过滤匹配项
filtered_array=()
for elem in "${array[@]}"; do
  # 匹配元素开头是否为指定前缀
  [[ $elem == "$prefix"* ]] && filtered_array+=("$elem")
done

# 验证输出
echo "${filtered_array[@]}"
# 输出结果:elem1:a elem1:b

补充说明

  • 该写法兼容所有常见Bash版本,且支持元素包含空格、特殊符号的场景,不会出现异常拆分问题。
  • 若追求简洁写法且确认数组元素无空格,可使用grep简化实现:
    filtered_array=( $(grep ^"$prefix" <<<"${array[*]}") )
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:45:02