Talvez:
sed 's/\(\(^\|:\)123@example\.com:\)\([^:]\+\)/foo/'
, pois não há delimitadores com escape no valor.
sed 's/\(\(^\|:\)123@example\.com:\)\([^:]\+\)/foo/'
| | | | | | | |
| | | | | | | +----- H. End of sub.
| | | | | | +------- G. Sub string
| | | | | +---------- F. Match Group 1.
| | | | +------------ E. End of Group 3.
| | | +------------------ D. Group 3.
| | +----------------------------------- C. User
| +--------------------------------------------- B. Prefix Group 2.
+--------------------------------------------------- A. Substitute
-
A:
s/
Substitua o comando. -
B:
(^|:)
Começa com o início da linha ou delimitador:
, Grupo 2, parte do grupo de correspondência 1. -
C:
O usuário corresponde, parte do grupo de correspondências 1. -
D:
([^:]+)
A parte para remover, qualquer coisa até:
. Parte do grupo 3. Tudo até o próximo delimitador. Talvez seja\(:\|$\)
, mas como deveria terminar em:
, bastaria. -
E:
\)
Terminando o agrupamento de remoção. -
F:
Colocar o grupo de correspondências 1. Usuário + delimitador (es).
-
G:
foo
O que quer que seja inserido como cripta. -
H:
/
Encerrando tudo. Optioanlly um/g
para global, mas suponha que seja apenas uma vez.