当变量有多个字符串时 grep 多个模式

当变量有多个字符串时 grep 多个模式

如何在包含多个字符串的变量中 grep 多个模式?

words=(hello world foo bar)
grep -e ${words}  text.txt

另外,我将用作words保存所有用户输入的变量。有什么方法可以更改变量的格式,以便可以使用它来 grep 内部的所有字符串?

text.txt问题是,当我尝试上面的代码时,无论它们是否满足 grep 命令,我都会得到所有结果。

答案1

words=(hello world foo bar)
grep -F -f <(printf "%s\n" "${words[@]}") text.txt

这使用流程替代提供一个“文件”,其中每个单词各占一行。该-f选项指示grep从文件中读取要匹配的模式列表。

-F选项表明grep模式是固定字符串,而不是正则表达式。这加快了模式匹配的速度。如果这些单词恰好是正则表达式,请删除此选项。

相关内容