2013-11-22 93 views
1

更換新行我有具有例如以下的CSV文件:如觀察在記事本++問題在PowerShell腳本

data1,data2,data3,data4,data5 
,,,,, 
data6,data7,data8,data9,data0 

新線是CRLF(`r`n)。

我有這個在我的PowerShell腳本與所有逗號刪除行:

(Get-Content $csvPath) | Foreach-Object {$_ -replace ",,,,,`r`n", ""} | Set-Content $csvPath2

該腳本將檢測不到回報。即使我刪除了逗號並且只有`r`n。不過,我可以用`r`n代替逗號而沒有問題。

如何刪除整行逗號使其如下所示?

data1,data2,data3,data4,data5 
data6,data7,data8,data9,data0 

回答

3

用途:

$lines = get-content C:\temp\test.txt | ?{$_ -notlike ",,,,*"} 
$lines.count 

這裏的文件test.txt包含:

data1,data2,data3,data4,data5 
,,,, 
data6,data7,data8,data9,data0 

輸出是:

data1,data2,data3,data4,data5 
data6,data7,data8,data9,data0 
+3

人,不知道大部分是正確的。你原來的嘗試不工作的原因是,默認情況下,Get-Content返回一個字符串數組,分隔符是換行符。所以,當你將它傳遞給ForEach-Object時,沒有任何一行會在它中間出現換行符。或者,如果您確實想要使用-replace方法,請將-Raw參數添加到Get-Content cmdlet(或者,如果您使用的是PowerShell 2或更低版本,請使用-ReadCount 0)。 – KevinD

+0

非常感謝你。 Knows的解決方案不是很成功。 @凱文感謝您的解釋。它爲什麼不起作用是有道理的。感謝您的協助! – Ben