मैं एक बड़ी xml फ़ाइल में टेक्स्ट का एक टुकड़ा ढूंढना चाहता हूं और किसी अन्य पाठ के साथ प्रतिस्थापित करना चाहता हूं। फ़ाइल का आकार लगभग (50 जीबी) है। मैं इसे कमांड लाइन में करना चाहता हूं। मैं पावरहेल देख रहा हूं और जानना चाहता हूं कि यह बड़े आकार को संभाल सकता है या नहीं। इसके अलावा मैं पावरहेल में प्रमुख ऑपरेटरों से बचने के लिए वाक्यविन्यास जानना चाहता हूं। मैं एक PowerShell नौसिखियाएक बड़ी फ़ाइल में खोजें और बदलें
हूँ वर्तमान में मैं कुछ इस तरह कोशिश कर रहा हूँ, लेकिन यह पसंद नहीं है यह
Get-Content C:\File1.xml | Foreach-Object {$_ -replace "xmlns:xsi=\"http:\/\/www\.w3\.org\/2001\/XMLSchema-instance\"", ""} | Set-Content C:\File1.xml
पाठ मैं बदलना चाहते हैं xmlns है: xsi = "http: //www.w3। संगठन/2001/XMLSchema-instance " खाली स्ट्रिंग के साथ" "।
प्रश्न
- Can PowerShell बड़े फ़ाइलों को संभालने
- कैसे मैं कमांड लाइन
- PowerShell में महत्वपूर्ण ऑपरेटरों और प्रमुख ऑपरेटरों की सूची बचने के लिए वाक्य रचना से powershell स्क्रिप्ट कहते हैं शक्ति में शेल।
- मैं नहीं चाहता कि प्रतिस्थापन मेमोरी में हो और मानते हुए स्ट्रीमिंग पसंद करें जो सर्वर को पर घुटनों नहीं लाएगा।
- वहाँ किसी भी अन्य तरीकों मैं ले जा सकते हैं कर रहे हैं (विभिन्न उपकरण/रणनीति?)
धन्यवाद
@Keith, तुम सच में PowerShell पर भरोसा;) मैं शायद होगा OutOfMemoryException के बारे में चिंता करें क्योंकि 50 जीबी छोटी मेमोरी लीक इकट्ठा करने के लिए काफी बड़ा है .. बस एक अनुमान है। व्यक्तिगत रूप से मैं सीधे 'फ़ाइल। ओपन' का उपयोग करता हूं और स्ट्रीम के साथ काम करता हूं और मैन्युअल रूप से तुलना करता हूं (कोई regex)। – stej
और ऐसा करने के लिए किसी को कुछ प्रकार के एक्सएमएल एपीआई का उपयोग नहीं करना चाहिए? सिर्फ एक विचार। डैनो यदि SAX या StAX .NET में उपलब्ध हैं; मैं एक्सएमएल के साथ बहुत ही कम काम करता हूं, लेकिन एक स्ट्रिंग करने से इसके लिए गलत लगता है। – Joey
.NET में केवल एकमात्र, कर्सर शैली पाठक (XmlReader/XmlTextReader) है - एक पुल तंत्र जो SAX पुश दृष्टिकोण से थोड़ा अलग है। यह थोड़ा कठिन है लेकिन जाने का एक अच्छा तरीका है जब पूरा एक्सएमएल दस्तावेज़ स्मृति में फिट नहीं होगा। –