Basicamente, porque [ ]
faz parte da sintaxe da expressão regular básica, enquanto os grupos de captura e {}
não são. Escapar de []
significa que você deseja corresponder a um colchete literal, não a uma classe.
Como um aparte, se o que você deseja é imprimir o último campo em um arquivo, awk
é muito mais fácil:
awk '{print $NF}' customers.txt > customers2.txt
No seu caso particular, você também pode usar cut
:
cut -d':' -f 4 customers.txt > customers2.txt
e você pode sempre usar o Perl:
perl -pe 's/.*:\s*//' customers.txt