在 Shell 编程中给定以下数组
foo=(spi spid spider spiderman bar lospia)
我想使用 GREP 来搜索数组中包含 3 个字母 spi
Correct output : spi spi spider spiderman lospia
我试过这样的
foo=(spi spid spider spiderman)
grep "spi" foo
但这似乎是错误的,正确的做法是什么???
最佳答案
最简单的解决方案是将数组元素通过管道传输到 grep 中:
printf -- '%s\n' "${foo[@]}" | grep spi
一些注意事项:
printf 是 bash 内置的,您可以使用 man printf
查找它。 --
选项告诉 printf 后面的任何内容都不是命令行选项。这可以防止 foo
数组中的字符串被这样解释。
"${foo[@]}"
的符号将数组的所有元素扩展为独立参数。总的来说,数组中的单词被放入一个多行字符串中,并通过管道传输到 grep 中,它根据 spi 匹配每一行。
关于arrays - 在数组上使用 GREP 查找单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21058210/