다음 내용의 파일이 있습니다.
<username><![CDATA[name]]></username>
<password><![CDATA[password]]></password>
<dbname><![CDATA[name]]></dbname>
첫 번째 줄의 "name"을 "something"으로 바꾸고 두 번째 줄의 "password"를 "somethingelse"로 바꾸고 세 번째 줄의 "name"을 "somethingdifferent"로 바꾸는 스크립트를 만들어야합니다. 파일에서 발생하는 순서에 의존 할 수 없으므로 "name"의 첫 번째 항목을 "something"으로 바꾸고 "name"의 두 번째 항목을 "somethingdifferent"로 간단히 바꿀 수 없습니다. 실제로 올바른 문자열을 찾아 바꾸려면 주변 문자열을 검색해야합니다.
지금까지 첫 번째 "이름"어커런스를 찾아서 바꾸기 위해이 명령을 시도했습니다.
sed -i "s/<username><![CDATA[name]]><\/username>/something/g" file.xml
그러나 그것은 작동하지 않으므로이 문자 중 일부는 탈출해야 할 수도 있습니다.
이상적으로는 정규식을 사용하여 두 "사용자 이름"어커런스를 일치시키고 "이름"만 바꿀 수 있기를 바랍니다. 이 같은하지만 sed
:
<username>.+?(name).+?</username>
괄호 안의 내용을 "무언가"로 바꿉니다.
이게 가능해?