2016-09-22 3 views
0
난 내가이로 통과하고 다른 값으로 값 CER_FREEZE_12_0_0_98000_6_CCT 및 cer_mainline를 교체하려면 여기 그래서 지금이

있는 XML 파일의 내용을 대체 나오지

<variable name="VOS_BRANCH"> 
    <name>VOS_BRANCH</name> 
    <type>string</type> 
    <value>cer_mainline</value> 
    </variable> 
    <variable name="VOS_BRANCH_LABEL"> 
    <name>VOS_BRANCH_LABEL</name> 
    <type>string</type> 
    <value>CER_FREEZE_12_0_0_98000_6_CCT</value> 
    </variable> 

과 같이 보이는 하나 개의 파일을

매개 변수를 스크립트에 추가하십시오.

내가 지금 뭐하는 거지 것은

xml ed -u "/ENV_VARIABLES/variable[@name='VOS_BRANCH']/value" -v $new_branch_name $file > $file1 
mv $file1 $file 
xml ed -u "/ENV_VARIABLES/variable[@name='VOS_BRANCH_LABEL']/value" -v $new_branch_label $file > $file1 
mv $file1 $file 

하지만 지금은 요구 사항이 작업을 수행하는 sed를 사용하는 것입니다. 그리고 난이 시도 나오지도 여기

+0

왜'sed'를 사용하여 가장 좋은 방법을 "not-so"효율적인 방법으로 바꾸고 싶습니까? – Inian

+1

' cer_mainline'및 ' CER_FREEZE_12_0_0_98000_6_CCT'의 인스턴스가 두 개 이상있는 경우 'sed'는 효율적인 방법이 아닙니다. 모든'xml' 인식 도구가 이상적인 도구가 될 것입니다. – Inian

+0

Sed는 위의 요구 사항 (대괄호 일치, 태그 일치)에 매우 취약합니다. XML을 인식하는 도구가 더 좋습니다. XML 인식 툴을 건너 뛰고 싶다면, 다음으로 더 좋은 대안은 perl이다. – blackpen

답변

1

사용하는 방법을 잘 모르겠습니다 : 터미널에 새로운 내용을 작성합니다

sed " 
    /<variable name=\"VOS_BRANCH\">/,/<\/variable>/ [email protected]<value>.*</value>@<value>$new_branch_name</value>@; 
    /<variable name=\"VOS_BRANCH_LABEL\">/,/<\/variable>/ [email protected]<value>.*</value>@<value>$new_branch_label</value>@ 
" "$file" 

합니다. 만족 스러우면 이전처럼 > "$file1"을 추가하거나에 -i 옵션을 추가하여 해당 파일을 편집 할 수 있습니다.

+0

그게 .. 정맥들 – panda

관련 문제