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
속성 값이 이라고 가정하면 전체 문서의 모든 노드에서 모든 속성이 제거됩니다 .convertedCurrentPrice
GBP