bash - 使用 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[@]}"))"
推荐阅读
- visual-studio - I need to undo an action past a refactoring action aka Global Action (*Fix Name Violation)
- r - How to read from REDCap forms with data validation into R (REDCapR::readcap_read)
- julia - time_ns() result not saved by writedlm() in julia
- sql - Oracle PL/SQL how to join first letter of value in a row and another row
- python - pyqt updating progress bar using thread
- c# - Is delayed initialization good or bad?
- javascript - How to wait for Recaptcha to load in Puppeteer/Pyppeteer?
- paypal - 有没有办法以编程方式判断 PayPal Client ID 和 Secret 是来自 Sandbox 还是 Live 环境?
- c++ - 用于平滑 GPS 列车位置的 KFilter 库设置
- javascript - 如何在 NodeJs 中使用 .pfx 证书和密码验证 Bearer 令牌?