sed найти и заменить в файле

У меня есть файл json со строкой, как показано ниже,

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

Может ли кто-нибудь помочь мне с командой sed, которая можно заменить указанное выше, как показано ниже,

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

Также я хотел бы использовать подстановочный знак 46, что-то вроде ABCCoreUI - *

Я пробовал sed s / ABCCoreUI-4 * / ABCCoreUI-47 / file.json

Вывод стать,

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

Спасибо

0
09.05.2017, 20:24
4 ответа

Также хотелось бы подстановочный знак 46, что-то вроде ABCCoreUI-*

Думаю, никто не ответил на ваш вопрос "ИСПРАВЬТЕ свой шаблон для соответствия любой цифре в конце вашей строки, возможно, из-за поведения символа * в последней позиции, вывод объединяет 47+42"

. Вы можете обернуть регулярное выражение в '' для предотвращения Shell Globs

Затем, чтобы соответствовать нулю или более цифрам

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

Чтобы соответствовать нулю или более символам

sed -r 's/ABCCoreUI-.*/ABCCoreUI-47/' file.json
  • -r включает расширенное sed регулярное выражение
  • [0-9] или [[:digit:]] (POSIX) для соответствия цифре
  • [0-9]* или [[:digit:]]* для соответствия нулю или более цифр
  • .* для соответствия нулю или более символов

Обратите внимание, что \d не работает.

1
28.01.2020, 02:46

Ниже сработало для меня

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

0
28.01.2020, 02:46

Этот быстрый и грязный sed помогает:

sed '/image.*docker\.xxx\.com.*CoreUI-46/s/CoreUI-46/CoreUI-47/' /path/to/yourfile.json
0
28.01.2020, 02:46

В большинстве простых случаев вы можете применить следующий sed подход:

sed 's/\("image": "[^"]*-\)46"/\147"/g' jsonfile
0
28.01.2020, 02:46

Теги

Похожие вопросы