यूनिक्स पर 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.