XML 파일에서 공백과 따옴표가 포함된 문자열 제거

XML 파일에서 공백과 따옴표가 포함된 문자열 제거

currencyId="GBP" xml 파일에서 이 문자열을 제거하고 싶습니다 . 첫 글자 c 앞에 공백이 있다는 점에 유의하세요. 데이터를 구문 분석하는 데 문제가 있습니다. 해당 문자열(초기 공백 포함)을 제거하면 작업이 더 쉬워질 것입니다. sed를 사용할 수 있다는 것을 알고 있지만 문자열 시작 부분의 공백과 큰따옴표로 인해 지금까지의 시도가 수렁에 빠지는 것 같습니다.

이를 명확히 하기 위해 다음은 XML 예제입니다.

<location>Ethiopia</location><country>ET</country><shippingInfo>  
 <shippingServiceCost currencyId="GBP">2.83</shippingServiceCost>
<shippingType>Flat</shippingType>
<shipToLocations>Worldwide</shipToLocations></shippingInfo><sellingStatus>
<currentPrice currencyId="USD">157.5</currentPrice>
<convertedCurrentPrice currencyId="GBP">111.45</convertedCurrentPrice>

목표를 달성하면 ConvertCurrentPrice 라인에 다음이 표시됩니다.

<convertedCurrentPrice>111.45</convertedCurrentPrice>

답변1

sed -i 's/ currencyId="GBP"//' file.xml- 이것은 나에게 효과적입니다. g모든 인스턴스를 교체하려면 sed 명령 끝에 추가하세요.

답변2

문자열을 전역적으로 바꿀지 여부를 지정하지 않았으므로 특정 줄을 바꾸는 것으로 가정하므로 명령은 다음과 같습니다.

sed -i '6s+currencyId="GBP"++' 파일 이름.xml
편집하기 전에 파일을 백업하는 것이 가장 좋습니다. 따라서 안전을 위해 사용하겠습니다.

sed -i.bak '6s+currencyId="GBP"++' 파일 이름.xml

답변3

xmlstarlet명령

xmlstarlet ed -d '//convertedCurrentPrice/@currencyId[. = "GBP"]' file.xml

currencyId속성 값이 이라고 가정하면 전체 문서의 모든 노드에서 모든 속성이 제거됩니다 .convertedCurrentPriceGBP

관련 정보