2014-10-17 183 views
0

我想使用PowerShell來刪除多餘的空間,並用條目之間的逗號替換它們,以便我可以將結果轉換爲可用於進一步分析的工作CSV。刪除PowerShell中的額外空間

這是我的代碼;

Get-Content –path C:\Users\USERNAME\Desktop\results.txt| ForEach-Object {$_ -replace "\s+" " " } | Out-File -filepath C:\Users\USERNAME\Desktop\results.csv 

在文本文件中的初始resuts都是這樣

entry  entry  entry (all separated with 5 spaces) 

我婉它看起來像本

入境,入境,入境

使Excel將放他們在單獨的單元格

謝謝你的時間

回答

2

您已經很近了,但您需要用","而不是" "來代替。讓我們假設你的文本文件行如下所示。我不知道你是否意味着領先/尾隨空間在那裏,但那沒關係。

" entry entry entry "

Get-Content –path C:\Users\USERNAME\Desktop\results.txt| ForEach-Object {$_.Trim() -replace "\s+" "," } | Out-File -filepath C:\Users\USERNAME\Desktop\results.csv -Encoding ascii 

$_.Trim() -replace "\s+" ","利用修剪,除去外空間,以防萬一在CSV多餘的值。

讓我知道如果我誤解了你的問題。

+1

Out-File上只是一個警告詞。默認編碼是Unicode。 '((Get-Content'entry.txt')-replace('\ s {2,5}',','))。Trim()| Out-File -Encoding ascii out.csv' – evilSnobu 2014-10-17 14:30:00

+0

如果您想要ASCII編碼,您可以交換Out-File for Set-Content,它使用ASCII的默認編碼。 – mjolinor 2014-10-17 15:20:30

+0

@kamikatze很好的瞭解編碼。在這種情況下,我只是遵循OP的輸出。 – Matt 2014-10-17 15:27:30

1

您可以使用使用trim從字符串的開頭或結尾刪除字符(默認情況下,空格)。看看here

這可以通過其他方式完成,如果你想用正則表達式替換字符來做到這一點。也看看here

相關問題