शक्ति कोशिका
लघु संस्करण
(Get-Content "in.txt" -raw) -replace "\(", "`0)" -replace "\)", "(" -replace "(`0\()", ")" >> "out.txt"
यह भी संभव है:
Set-Content "out.txt" ((Get-Content "in.txt" -raw) -replace "\(", "`0)" -replace "\)", "(" -replace "(`0\()", ")")
- पुस्तकें
in.txt
- करने के लिए लिखता है
out.txt
(क्रम पंक्ति के अंत को देखने के लिए पहले कोड नमूने में क्षैतिज स्क्रॉल)
लंबे संस्करण
$in = "in.txt";
$out = "out.txt";
(Get-Content $in -raw) -replace "\(", "`0)" -replace "\)", "(" -replace "(`0\()", ")" >> $out
यह भी संभव है:
Set-Content $out ((Get-Content $in -raw) -replace "\(", "`0)" -replace "\)", "(" -replace "(`0\()", ")")
व्याख्या
कृपया एक पल के लिए गुप्त backslashes पर ध्यान न दें - वे केवल एस्कैपिंग कोष्ठक के लिए अच्छे हैं जो नियमित अभिव्यक्तियों में एक विशेष अर्थ रखते हैं।
हम पहले की प्रत्येक पुनरावृत्ति की जगह (
से NUL)
(देखें NUL चरित्र )। फिर, हम प्रत्येक के )
द्वारा प्रतिस्थापित करते हैं (
। अंतिम चरण के रूप में, इसके NUL(
द्वारा पुन: प्रतिस्थापित किया जाता है )
।
इस तरह से, हम यह सुनिश्चित करते हैं कि हम "डबल रिप्लेसमेंट" न करें, उदाहरण के लिए:
Initial string value:
(test)
After replacing "(" by ")"
)test)
After replacing ")" by "("
(test(
चेतावनी
फ़ाइल में स्वयं अनुक्रम नहीं होना चाहिए NUL)
। इससे मेरी पॉवर्सशेल स्क्रिप्ट की गलत व्याख्या होगी क्योंकि मैंने एनयूएल के चरित्र को एक विशेष संकेतक के रूप में इस्तेमाल किया था (उदाहरण के लिए, हरे रंग की स्क्रीन का उपयोग करते समय और हरे रंग के कपड़े पहनने पर यही स्थिति आती है )।