O código do xkcd usa GNU grep (muitas distribuições do Linux), não BSD grep (Mac OS X).
GNU grep tem alguns recursos BSD grep , por exemplo, Expressões regulares compatíveis com Perl (PCRE).
O padrão no seu exemplo, (.)
, na verdade funciona tanto para PCRE quanto para Expressões regulares estendidas (ERE); se você modificar a sintaxe levemente, você pode até usar Basic Regular Expressions (BRE):
grep -P "(.)"
grep -E "(.)"
grep "\(.\)"
todo o trabalho conforme o esperado, desde que o recurso esteja disponível. Os dois últimos funcionarão no OS X ou em qualquer outra implementação sem as extensões do GNU.
Para uma definição formal de BRE e ERE, clique aqui .
Para as diferenças entre BRE, ERE e PCRE, consulte Por que minha expressão regular funciona em X, mas não em Y? .