Arrays 如何在bash中根据条件缩短数组
我是一名新的Arrays 如何在bash中根据条件缩短数组,arrays,bash,Arrays,Bash,我是一名新的bash学习者。我在bash中有一个数组,从标准输入中获取输入。我必须根据一些逻辑来缩短数组。比如说,数组中有以下元素: Namibia Nauru Nepal Netherlands NewZealand Nicaragua Niger Nigeria NorthKorea Norway 现在,我必须缩短数组,只有接受的元素才能保留在数组中。如果数组的一个元素不包含字母a(区分大小写),并且包含字母i(不区分大小写),则该元素将被视为已接受。对于上述清单,答案是: Niger
bash
学习者。我在bash
中有一个数组,从标准输入中获取输入。我必须根据一些逻辑来缩短数组。比如说,数组中有以下元素:
Namibia
Nauru
Nepal
Netherlands
NewZealand
Nicaragua
Niger
Nigeria
NorthKorea
Norway
现在,我必须缩短数组,只有接受的元素才能保留在数组中。如果数组的一个元素不包含字母a
(区分大小写),并且包含字母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[@]}"
如果要在构造数组时筛选列表,应执行以下操作:
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[@]}"
那有什么问题?你试了什么?你被困在什么地方了吗?我想让bash
代码来解决这个问题@阿尔伯托萨卡诊断不会发生。Stackoverflow不是一个让别人做你工作的网站,你需要展示你为解决这个问题所做的努力。一旦你这样做了,我相信你会找到愿意帮助你的人。我已经编辑了我的问题。我做了一些工作,如果有条件的话,我一直在研究如何打印或制作一个新的数组。请注意,这不是任何专业的工作或东西。我是一名新的bash学习者,也是一名学生。学习bash是我的好奇心,它甚至不是我学术的一部分。谢谢@AlbertoZaccagniI认为您可以不用编写脚本,而是使用已经提供给您的工具,如grep:echo$countries | grep i | grep-va
。当然,这是更好的方法,但这是一种。您是否有禁止使用诸如grep
等工具的要求?