Unix에서 XML 파일의 값 수정


0

유닉스에서 Xml 파일로 무언가를해야합니다. 특히 1 경로에서 다른 XML 파일이 있습니다. value tradeId 태그의 처음 10 자리를 잘라서 붙여 넣어 태그를 발행해야합니다.

<issuer issuerIdScheme="http://www.remove-234.org">549300ADFPIVCPUAAAA</issuer>

<tradeId tradeIdScheme="http://www.remove-234.org">1234567890ABCDEFGHILMN</tradeId>

따라서이 결과가 필요합니다.

<issuer issuerIdScheme="http://www.remove-234.org">1234567890</issuer>

과

<tradeId tradeIdScheme="http://www.remove-234.org">ABCDEFGHILMN</tradeId>

도움을 주셔서 감사합니다!


조작하려는 XML 조각을 게시해야합니다. 그러면 도와 드리겠습니다.
— Eugen Rieck

답변:


0

텍스트 수준에서 XML을 조작하는 데 문제가 있지만 이것으로 충분할 수 있습니다. XML 파일이 있다고 가정하면

<something>
    <issuer issuerIdScheme="http://www.remove-234.org">549300ADFPIVCPUAAAA</issuer>
    <tradeId tradeIdScheme="http://www.remove-234.org">1234567890ABCDEFGHILMN</tradeId>
</somtehing>

그런 다음 이것을 통해 실행

grep -v '<issuer issuerIdScheme' | sed 's/<tradeId tradeIdScheme="http:\/\/www.remove-234.org">\(..........\)\([^<]*\)<\/tradeId>/<issuer issuerIdScheme="http:\/\/www.remove-234.org">\1<\/issuer>\n\t<tradeId tradeIdScheme="http:\/\/www.remove-234.org">\2<\/tradeId>/'

출력을 생성합니다

<something>
    <issuer issuerIdScheme="http://www.remove-234.org">1234567890</issuer>
    <tradeId tradeIdScheme="http://www.remove-234.org">ABCDEFGHILMN</tradeId>
</somtehing>

편집하다

폴더의 모든 XML 파일로이 작업을 수행하는 스크립트의 경우

#!/bin/bash

FOLDER="/home/cg/root"

for X in "$FOLDER"/*.xml; do
  test -f "$X" || continue
  mv "$X" "$X.ori" || continue
  cat "$X.ori" | grep -v '<issuer issuerIdScheme' | sed 's/<tradeId tradeIdScheme="http:\/\/www.remove-234.org">\(..........\)\([^<]*\)<\/tradeId>/<issuer issuerIdScheme="http:\/\/www.remove-234.org">\1<\/issuer>\n\t<tradeId tradeIdScheme="http:\/\/www.remove-234.org">\2<\/tradeId>/' > "$X"
done

많은 Eugen 감사합니다! 훌륭한 일! 마지막으로, 스크립트를 작성하려면 다음과 같이하십시오 : #! / bin / bash file = "/ home / cg / root / *. xml"if [-f "$ file"] 그러면 코드 fi So in 이 방법으로 경로의 모든 파일을 수정할 수 있습니다.
— Massimiliano Mascoli

스크립트에 대한 편집 내용을 참조하십시오.
— Eugen Rieck

대단히 유진 감사합니다! 좋은 하루 되세요! 도와 주셔서 감사합니다!
— Massimiliano Mascoli
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.