如何解决使用 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}'`
虽然它有效,但有没有更短、更有效的方法来完成我想做的事情?
解决方法
基于您原来的 awk 解决方案,但无需使用 grep 和 head:
OV="$(awk -F 'OVG' '/OVG/ { print $1;exit }' <(printf '%s\n' "${OVGARR[@]}"))"
,
不炮轰似乎要快得多。阅读的难易程度是主观的。
for o in "${OVGARR[@]}" ; do
if [[ $o == *OVG ]] ; then
OV=${o%OVG}
break
fi
done
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。