Assumir o que você realmente quer dizer é que deseja excluir tudo dos últimos dois pontos e deixar o john.doe
intact:
echo 'hd_ma_prod_customer_ro:*:123456789:john.doe' |
sed 's/.*://'
Explicação:
A primeira linha apenas canaliza a string de teste para sed
, por exemplo.
A segunda é uma sed
substituição básica. A parte entre o primeiro e o segundo /
é o regex para procurar e a parte entre o segundo e o terceiro é para substituí-lo (nada neste caso, pois estamos excluindo).
Para o regex, .
corresponde a qualquer caractere, *
repete esse número qualquer (incluindo zero) e :
corresponde a dois pontos. Então, efetivamente, é qualquer coisa seguida por dois pontos. Como .*
pode incluir dois pontos, a correspondência é "gulosa" e tudo até os últimos dois pontos é incluído.