首页 > 解决方案 > 使用 bash 从数组中提取匹配字符串的最佳方法

问题描述

我在下面有一个示例数组;

OVGARR=(ACCS ELB NOVOVG SCN MISOVG)

带有 *OVG 的字符串的位置可以在任何索引中,并且有多种不同类型的 OVG 字符串。我想获取数组上第一个 *OVG 字符串的值,剪切字符串的“OVG”部分并将其分配给一个变量。

我最初的解决方案如下;

OV=`printf '%s\n' "${OVGARR[@]}" | grep -P 'OVG$' | head -1 | awk -F'OVG' '{print $1}'`

虽然它有效,但是否有一种更短、更有效的方法来完成我想做的事情?

标签: bashshellscripting

解决方案


基于您原来的 awk 解决方案,但无需使用 grep 和 head:

 OV="$(awk -F 'OVG' '/OVG/ { print $1;exit }' <(printf '%s\n' "${OVGARR[@]}"))"

推荐阅读