यूनिक्स पर XML फ़ाइल पर मूल्य संशोधित करें


0

मैं यूनिक्स पर Xml फ़ाइल के साथ कुछ करने की जरूरत है। विशेष रूप से 1 पथ में मेरे पास अलग-अलग xml फाइलें हैं। मुझे मान ट्रेडआईड टैग के लिए पहले 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" अगर [-f "$ फाइल"] तो। तुम्हारा कोड तो इस तरह से मैं सही पथ में सभी फ़ाइल को संशोधित कर सकते हैं
Massimiliano Mascoli

स्क्रिप्ट के लिए मेरा संपादन देखें।
Eugen Rieck

बहुत बहुत शुक्रिया यूजेन! मैं तुम्हारे शुभ दिन की कामना करता हूँ! मदद के लिए शुक्रिया!
Massimiliano Mascoli
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.