Apenas outro com sed com uma pequena modificação para corresponder à subexpressão "Teste: r", tornando a substituição um pouco mais concisa
echo 'Test:r12345' | sed 's/\(Test:r\)[0-9]\{5\}/YYYYY/g'
Eu preciso pesquisar e substituir uma string alfanumérica usando o SED.
String de pesquisa: Test:rXXXXX
, em que XXXXX sempre será um número de 5 dígitos
Substituir String: Test:rYYYYY
, onde YYYYY será sempre um número de 5 dígitos
Eu tenho o seguinte:
echo 'Test:r12345' | sed 's/Test:r[0-9][0-9][0-9][0-9][0-9]$/Test:rYYYYY/g'
Isso funciona atualmente.
Existe uma maneira melhor de conseguir isso? Eu não quero usar '[0-9]' 5 vezes na expressão
Use esta sintaxe:
[0-9]{5}
Isso requer que você passe '-r' para sed, então o novo exemplo será:
echo 'Test:r12345' | sed -r 's/Test:r[0-9]{5}$/Test:rYYYYY/g'
bem, com base na sua amostra, você pode simplesmente substituir o segundo campo usando awk
echo 'Test:r12345' | awk -F":" '{$2="rYYYYY"}1' OFS=":"
Não há necessidade de criar expressões regulares complexas. BEIJO