У меня есть файл 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",
Спасибо
Также хотелось бы подстановочный знак 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
не работает.
Ниже сработало для меня
sed "s|\(^.*\"image\": \"docker.abc.com/abc-pr0000abc:\).*|\ ABCCoreUI-47\",|g" -i Artifactorytest.json
Этот быстрый и грязный sed
помогает:
sed '/image.*docker\.xxx\.com.*CoreUI-46/s/CoreUI-46/CoreUI-47/' /path/to/yourfile.json
В большинстве простых случаев вы можете применить следующий sed подход:
sed 's/\("image": "[^"]*-\)46"/\147"/g' jsonfile