grep 中的参数扩展

grep 中的参数扩展

要从填充有多个条目的文本文件中检索以下模式的字符串:

entry=G_1234
entry=G_5678
entry=G_2345

以下 grep 语句不提供任何结果

grep -ioe "entry=G_{1234,2345}" filename

请您指导一下错误在哪里或者 grep 中是否无法进行参数扩展?

答案1

任何一个:

grep -iEo 'entry=G_(1234|2345)'

即使用扩展 ( E) 正则表达式的交替运算符。

或者对于支持大括号扩展的 shell,请使用:

grep -io '-eentry=G_'{1234,2345}

然后 shell 会将其扩展为:

grep -io -eentry=G_1234 -eentry=G_2345

导致 grep 查找这两个中的任何一个e表达。

答案2

Grep 使用正则表达式,而不是 shell 模式。正则表达式有不同的语法:

grep -ioe 'entry=G_\(1234\|2345\)' filename

相关内容