다음과 같이 한 줄로 구성된 json 파일이 있습니다.
"image": "docker.abc.com/abc-pr0000abc:ABCCoreUI-46",
누구든지 아래와 같이 sed 명령을 사용하여 위 명령을 대체하도록 도와줄 수 있습니까?
"image": "docker.abc.com/abc-pr0000abc:ABCCoreUI-47",
또한 ABCCoreUI-*와 같은 와일드카드 46을 원합니다.
나는 노력했다sed s/ABCCoreUI-4*/ABCCoreUI-47/ file.json
출력은,
"image": "docker.abc.com/abc-pr0000abc:ABCCoreUI-4742",
감사해요
답변1
또한 ABCCoreUI-*와 같은 와일드카드 46을 원합니다.
"문자열 끝의 숫자와 일치하도록 패턴을 수정하세요. 아마도 *
마지막 위치의 문자 동작으로 인해 출력이 47+42로 연결됩니다." 라는 질문에 대답한 사람이 없다고 생각합니다.
''
방지하기 위해 정규 표현식을 래핑할 수 있습니다.쉘 구
그런 다음 0개 이상의 숫자를 일치시킵니다.
sed -r 's/ABCCoreUI-[0-9]*/ABCCoreUI-47/' file.json
sed -r 's/ABCCoreUI-[[:digit:]]*/ABCCoreUI-47/' file.json
0개 이상의 문자 일치
sed -r 's/ABCCoreUI-.*/ABCCoreUI-47/' file.json
-r
예 확장sed
정규식 활성화[0-9]
또는[[:digit:]]
(POSIX) 일치 번호[0-9]*
또는[[:digit:]]*
0개 이상의 숫자와 일치.*
0개 이상의 문자 일치
이것은 \d
작동하지 않습니다.
답변2
이 빠르고 더러운 접근 방식 sed
은 트릭을 수행하는 것 같습니다.
sed '/image.*docker\.xxx\.com.*CoreUI-46/s/CoreUI-46/CoreUI-47/' /path/to/yourfile.json
답변3
가장 간단한 경우에는 다음을 적용할 수 있습니다.sed방법:
sed 's/\("image": "[^"]*-\)46"/\147"/g' jsonfile
답변4
다음은 나를 위해 일했습니다
sed "s|\(^.*\"image\": \"docker.abc.com/abc-pr0000abc:\).*|\ABCCoreUI-47\",|g" -i artifactorytest.json