我是一名新的bash
学员。我在bash
中有一个数组,从标准输入中获取输入。我必须在一些逻辑的基础上缩短阵列。说,我在数组中有以下元素:
Namibia
Nauru
Nepal
Netherlands
NewZealand
Nicaragua
Niger
Nigeria
NorthKorea
Norway
现在,我必须缩短数组,只有accepted
元素可以保留在数组中。如果它不包含字母accepted
(区分大小写)并且包含字母a
(不区分大小写)1},则数组的一个元素将被视为i
。对于上面的列表,答案是:
Niger
如何在bash
中实现它?
请注意,我可以在没有如下条件的情况下打印阵列。但我希望有条件。
countries=()
while read -r country; do
countries+=( "$country" )
done
# here i have to do something to shrink/shorten the array on the basis of some logic. In this case, elements of countries should have at least one character 'a' and should not contain 'i' / 'I'.
echo "${countries[@]}"
答案 0 :(得分:1)
如果要在构建阵列时过滤列表,则应执行以下操作:
countries=()
while read -r country; do
country=$(echo "$country" | grep -vi a | grep i)
if [ -n "$country" ]; then
countries+=( "$country" )
fi
done
printf '%s\n' "${countries[@]}"