Meu comando sed é,
sed '/(.*:)/d' <<< 'abcd:bcde:cdeaf'
Deve retornar,
bcde:cdeaf
(ou seja) todos os caracteres antes do primeiro dois pontos na linha e o próprio dois pontos devem ser removidos.
Mas isso não está removendo nada.
Minha confusão surge principalmente devido a,
1) As parênteses para a correspondência de padrões precisam ser escapadas dentro dos regex-es sed?
2) Nos dois casos (com escape / sem escape), ele não está funcionando. Eu tentei,
sed -E '/\\(.*:\\)/d' <<< 'abcd:bcde'
printf "%s\n" "${line#*:}"
...
while read line
que recebe o $line
, provavelmente sed
deve ser o preferido.
sed 's/[^:]*://'
. E você não estád
excluindo a linha de entrada, a propósito, está modificando-a com ums///
comando de substituição. Você precisa substituir o primeiro bit que não é cólon e o cólon que o segue com nada.