2008-11-28 17 views
26

को देखते हुए test.txt युक्तPowerShell का उपयोग करके मैं न्यूलाइन को कैसे बदल सकता हूं?

test 
message 

मैं के साथ समाप्त करना चाहते हैं:

testing 
a message 

मुझे लगता है कि निम्नलिखित काम करना चाहिए, लेकिन यह नहीं है:

Get-Content test.txt |% {$_-replace "t`r`n", "ting`r`na "} 

मैं एक खोज कैसे कर सकता हूं और जहां मैं ढूंढ रहा हूं उसे प्रतिस्थापित कर सकता हूं जिसमें सीआरएलएफ है?

उत्तर

29

एक सीआरएलएफ निश्चित रूप से सीआर और एलएफ दो पात्र हैं। हालांकि, `n दोनों में शामिल हैं। उदाहरण के लिए:

PS C:\> $x = "Hello 
>> World" 

PS C:\> $x 
Hello 
World 
PS C:\> $x.contains("`n") 
True 
PS C:\> $x.contains("`r") 
False 
PS C:\> $x.replace("o`nW","o There`nThe W") 
Hello There 
The World 
PS C:\> 

मुझे लगता है कि आप `r साथ समस्याओं में चला रहे हैं। मैं आपके उदाहरण से `r को हटाने में सक्षम था, केवल `n का उपयोग करें, और यह काम किया। बेशक, मुझे नहीं पता कि आपने मूल स्ट्रिंग कैसे बनाई है, इसलिए मुझे नहीं पता कि वहां क्या है।

16

मेरी समझ में, Get-Content सभी नई-पंक्तियों/कैरिएज रिटर्न समाप्त जब यह पाइप लाइन के माध्यम से अपने पाठ फ़ाइल रोल। मल्टीलाइन रेगेक्स करने के लिए, आपको अपनी स्ट्रिंग सरणी को एक विशाल स्ट्रिंग में फिर से गठबंधन करना होगा। मैं कुछ ऐसा करता हूं:

$text = [string]::Join("`n", (Get-Content test.txt)) 
[regex]::Replace($text, "t`n", "ting`na ", "Singleline") 

स्पष्टीकरण: केवल छोटी फाइलें ही लोग! कृपया इस अपने 40   जीबी लॉग फ़ाइल :)

+0

अंगूठे कि स्पष्टीकरण –

14

-Raw के साथ पर कोशिश मत करो आप क्या

+1

ध्यान देने योग्य बात यह पी एस v2 के साथ उपलब्ध नहीं है वर्थ के लिए उम्मीद मिलना चाहिए, लेकिन अगर आप आउट-स्ट्रिंग के लिए पाइप आपको एक ही प्रभाव मिलेगा। – Robin

+2

मुझे लगता है कि पैरामीटर क्या है इसके अलावा कुछ भी लौटने में कमांड की अक्षमता की अशिष्टता के लिए उपाय के रूप में है। इसके लिए +1। मुझे नहीं पता था और मैंने यह पता लगाने की कोशिश कर 1hr को उड़ा दिया कि मेरे तारों में उनकी नई लाइनें क्यों लापता थीं – ekkis

संबंधित मुद्दे

 संबंधित मुद्दे