다음과 같은 줄이 많은 큰 bash 파일이 있습니다.
... --env COMP_LABELS="service:service1" ...
service1은 각 행마다 다릅니다. (때때로 service:mgmt
또는 service:admin
).
"
닫는 따옴표( ) 앞에 다음 문자열을 추가하는 일부 명령(아마도 sed)을 생성하려고 합니다 ,branch:$branch
.
따라서 첫 번째 예에서는 다음과 같습니다.
... --env COMP_LABELS="service:service1,branch:$branch" ...
할 수 있나요? 먼저, 감사합니다!
(비슷한 것을 시도했지만 sed -i 's/OMP_LABELS=\"service:.*\"/<not sure what to put here since I need to the entire word>/g' filename
어떻게 달성하는지 모르겠습니다)
답변1
"
sed를 사용하면 첫 번째 문자 다음에 문자가 아닌 일련의 문자를 간단히 일치시킬 수 있습니다 "
.
$ echo '... --env COMP_LABELS="service:service1" ...' |
sed 's/COMP_LABELS="[^"]*/&,branch:$branch/'
... --env COMP_LABELS="service:service1,branch:$branch" ...
이는 /COMP_LABELS="[^"]*/
문자열 COMP_LABELS="
뒤에 0개 이상의 비 "
문자( ^
부정 연산자)가 오는 것과 일치한 다음 /&,branch:$branch/
LHS에서 일치된 것( &
역참조)으로 대체하고 그 뒤에 문자열이 옵니다.,branch:$branch