Parece que grep aceita \| como um separador entre expressões de pesquisa alternativas (como | em egrep , em que \| corresponde a um literal | ).
Além disso, sua expressão tem outros problemas: -
-
+é suportado apenas emegrep(ougrep -E). -
\snão é suportado dentro de um grupo de caracteres[]. - Não vejo a necessidade de
|no grupo de caracteres.
Portanto, o seguinte funciona para grep : -
grep "{{flag|[a-zA-Z ][a-zA-Z ]*}}" <temp
Ou (graças à entrada do Glenn Jackman ): -
grep "{{flag|[a-zA-Z ]\+}}" <temp
Em egrep , os caracteres {} têm significado especial, por isso precisam ser ignorados: -
egrep "\{\{flag\|[a-zA-Z ]+\}\}" <temp
Note que removi o uso desnecessário de cat .
