linux - 如何在 Linux 上递归搜索多个模式?

标签 linux string shell search command-line

我正在尝试查找包含以下两种模式之一的文件:

select AND into
SELECT AND INTO
select AND INTO
SELECT AND into

我所说的AND,是指逻辑。我正在使用以下命令:

grep -r 'INTO\|SELECT' .   

检查文件是否有 INTO SELECT,但如果其中一个存在,则返回字符串,但我需要两者。

最佳答案

如果模式必须出现在同一行,您可以使用

grep -r '\(INTO.*SELECT\)\|\(SELECT.*INTO\)' .

这两种选择都可以满足任一订单。如果这两种模式可以出现在不同的行上,请尝试以下操作:

grep -r -Z -l 'INTO' . | xargs -0 grep 'SELECT'

第一个 grep 将打印具有 INTO 的文件的名称 (-l)。 -Zxargs -0 协同工作,将这些名称传递给第二个 grep,后者查找 SELECT

注意感谢@ghoti:对于 GNU 以外的 grep 版本,请尝试 --null 而不是 -Z

关于linux - 如何在 Linux 上递归搜索多个模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38085672/

相关文章:

linux - 以编程方式检查用户是否在桌面 - Linux

c - 字符数组的状态

php - mssql_connect 神秘地停止工作

linux - Bash:将 redis-benchmark 结果存储到 var 生成奇怪的字符串

python - 在 python 中制作字符串值的直方图

c++ - 使用一对迭代器进行字符串初始化

bash:意外标记 `(' 附近的语法错误

shell - grep\\$ 和 grep\\\$ 有什么区别?

linux - 如何从另一个 sh 文件运行 sh 文件

linux - 如何用 jenkins 动态 build_number 替换 efs 文件/代码中的 ${BUILD_NUMBER} 变量