SED: Pesquise uma cadeia alfanumérica e substitua-a

1

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

    
por smokinguns 23.04.2011 / 23:02

3 respostas

1

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'
    
por 25.04.2011 / 16:09
1

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' 
    
por 23.04.2011 / 23:05
1

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

    
por 24.04.2011 / 00:57

Tags