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.