迭代一串字符串,并在Bash中删除部分值?

时间:2015-05-04 00:39:38

标签: arrays regex string 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

我是否必须使用正则表达式来执行此操作?如果是这样,有没有人知道任何在线的好教程值得一试?

2 个答案:

答案 0 :(得分:2)

这应该有效:

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

答案 1 :(得分:1)

if [[ $x == *.com.au ]]; then
    edited_array+=( "${x%.com.au}" )
fi

在bash双括号内,==运算符是模式匹配运算符。然后,只需使用shell参数扩展来删除域并使用+=

追加到数组
相关问题