sed encontrar e substituir no arquivo

0

Eu tenho um arquivo json com uma linha como abaixo,

"image": "docker.abc.com/abc-pr0000abc:ABCCoreUI-46",

Alguém pode me ajudar com o comando sed que pode substituir acima, como abaixo,

"image": "docker.abc.com/abc-pr0000abc:ABCCoreUI-47",

Além disso, eu gostaria de curingar 46, algo como ABCCoreUI - *

Eu tentei sed s/ABCCoreUI-4*/ABCCoreUI-47/ file.json

Saída torna-se

"image": "docker.abc.com/abc-pr0000abc:ABCCoreUI-4742",

Obrigado

    
por user2068179 09.05.2017 / 18:45

4 respostas

1

Also I would like to wild card 46, something like ABCCoreUI-*

Acho que ninguém respondeu o que você pediu "FIX seu padrão para combinar com qualquer dígito no final da sua string, talvez devido ao comportamento do caractere * na última posição, a saída está concatenando 47 + 42"

Você pode agrupar o regexp em '' para evitar Shell Globs

Em seguida, para corresponder a zero ou mais dígitos

sed -r 's/ABCCoreUI-[0-9]*/ABCCoreUI-47/' file.json
sed -r 's/ABCCoreUI-[[:digit:]]*/ABCCoreUI-47/' file.json

Para corresponder a zero ou mais caracteres

sed -r 's/ABCCoreUI-.*/ABCCoreUI-47/' file.json
  • -r é ativar o% estendidosed regexp
  • [0-9] ou [[:digit:]] (POSIX) para corresponder a um dígito
  • [0-9]* ou [[:digit:]]* para corresponder a zero ou mais dígitos
  • .* para corresponder a zero ou mais caracteres

Observe que \d não está funcionando.

    
por 09.05.2017 / 21:39
0

Este sed rápido e sujo parece funcionar:

sed '/image.*docker\.xxx\.com.*CoreUI-46/s/CoreUI-46/CoreUI-47/' /path/to/yourfile.json
    
por 09.05.2017 / 18:56
0

Na maioria dos casos, você pode aplicar a seguinte abordagem sed :

sed 's/\("image": "[^"]*-\)46"/7"/g' jsonfile
    
por 09.05.2017 / 18:56
0

Abaixo trabalhei para mim

sed "s|\(^.*\"image\": \"docker.abc.com/abc-pr0000abc:\).*|\ABCCoreUI-47\",|g" -i artifactorytest.json

    
por 09.05.2017 / 20:57

Tags