sed는 파일에서 찾기 및 바꾸기

sed는 파일에서 찾기 및 바꾸기

다음과 같이 한 줄로 구성된 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

관련 정보