加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – bash数组的前缀和后缀元素

发布时间:2020-12-14 06:27:08 所属栏目:百科 来源:网络整理
导读:我想在bash中预先修复一个数组,类似于大括号扩展. 说我有一个bash数组 ARRAY=( one two three ) 我想能够像下面的大括号扩展一样预先修改它 echo prefix_{one,two,three}_suffix 我能找到的最好用的是使用bash regex来添加前缀或后缀 echo ${ARRAY[@]/#/pref
我想在bash中预先修复一个数组,类似于大括号扩展.

说我有一个bash数组

ARRAY=( one two three )

我想能够像下面的大括号扩展一样预先修改它

echo prefix_{one,two,three}_suffix

我能找到的最好用的是使用bash regex来添加前缀或后缀

echo ${ARRAY[@]/#/prefix_}
echo ${ARRAY[@]/%/_suffix}

但我找不到任何关于如何同时做两件事的事情.我可能会使用正则表达式捕获并执行类似的操作

echo ${ARRAY[@]/.*/prefix_$1_suffix}

但似乎bash变量正则表达式替换中不支持捕获.我还可以存储一个临时数组变量

PRE=(${ARRAY[@]/#/prefix_})
echo ${PRE[@]/%/_suffix}

这可能是我能想到的最好的,但它似乎仍然低于标准杆.最后一种选择是使用类似于的for循环

EXPANDED=""
for E in ${ARRAY[@]}; do
    EXPANDED="prefix_${E}_suffix $EXPANDED"
done
echo $EXPANDED

但这太丑了.如果我想要前缀后缀或数组元素的空格,我也不知道如何让它工作.

您的上一个循环可以通过以空格友好的方式完成:
EXPANDED=()
for E in "${ARRAY[@]}"; do
    EXPANDED+=("prefix_${E}_suffix")
done
echo "${EXPANDED[@]}"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读