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
). -
\s
nã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
.