arrays - 在数组上使用 GREP 查找单词

标签 arrays bash shell debugging command-line

在 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/

相关文章:

linux - bash:命令在终端中工作,而不是在脚本中工作

c++ - 用更少的内存在 C++ 中实现二维数组

javascript - 在javascript中按键名对对象数组进行排序

c++ - 此排序数组代码导致最后一个元素消失

bash - UNIX 中具有正确时间戳的命令历史记录

arrays - 命令在终端中有效,但在 Bash 脚本中无效

Java 不可达声明

bash - 为什么我的 setuid root bash shell 脚本不起作用?

bash - 为单个用户设置默认 PASE IBM i shell

linux - 编写一个shell脚本ssh到远程机器并执行命令