要从填充有多个条目的文本文件中检索以下模式的字符串:
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