一次全部 grep

一次全部 grep

我的脚本接收参数并需要 grep 另一个文件。脚本循环遍历每个参数。

有没有办法收集单个搜索字符串中的参数并使用 OR 进行 grep ?我想这样做是为了提高速度,希望一次搜索所有内容将使我的脚本更快。欣赏任何想法。

答案1

grep -e foo -e bar -e baz files

或者:

grep 'foo
bar
baz' files

如果那些foo, bar,baz是字符串而不是基本正则表达式,请将该-F选项添加到上面的两个grep 命令中。

对于扩展正则表达式:

grep -E 'foo|bar|baz' files

如果字符串列表位于位置参数 ( $1, $2...) 中:

NL='
'
IFS=$NL  # or IFS=$'\n' with ksh93/zsh/bash/mksh/FreeBSD sh...
grep -Fe "$*" files

$*是位置参数与 的第一个字符的串联$IFS

答案2

egrep(或grep -E) 可以做 OR:

egrep "string|string|string" <file>

答案3

另一种选择是使用确认默认情况下支持扩展正则表达式:

ack "one|two"

对于不区分大小写的情况ack -i,请使用 . 对于非标准文件类型,请使用ack --all.

相关内容