我的脚本接收参数并需要 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>