通过一系列字符串迭代,并在bash中删除其价值的一部分



如何通过一系列字符串迭代并删除其值的一部分?(bash)

我的数组中填充了一个保存为字符串的站点列表,我想抓住它们在'.com.au'左侧的部分,并将它们保存到新数组中。字符串中也有几个没有以'.com.au'结尾的项目,我想完全忽略它们。

为了使阅读更容易,我删除了大部分代码,只留在我认为与问题相关的内容中:

#!/bin/bash
full_array(*); declare -p full_array
edited_array=()
for x in ${full_array[@]};
    #If x ends with '.com.au'
        #Remove '.com.au' from x
        #Save output to edited_array
    #Else
        #Skip item
done

我是否必须使用正则表达式?如果是这样,有人在网上知道任何值得检查的好教程吗?

这应该有效:

for x in ${full_array[@]};do
[[ $x == *.com.au ]] && edited_array+=("${x%.com.au}")
done
if [[ $x == *.com.au ]]; then
    edited_array+=( "${x%.com.au}" )
fi

在bash双括号内,==操作员是模式匹配操作员。然后,只需使用shell参数扩展即可删除域并用+=

附加到数组

相关内容

  • 没有找到相关文章

最新更新