删除PowerShell中的额外空间

问题描述:

我想使用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将放他们在单独的单元格

谢谢你的时间

您已经很近了,但您需要用","而不是" "来代替。让我们假设你的文本文件行如下所示。我不知道你是否意味着领先/尾随空间在那里,但那没关系。

" 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

您可以使用使用trim从字符串的开头或结尾删除字符(默认情况下,空格)。看看here

这可以通过其他方式完成,如果你想用正则表达式替换字符来做到这一点。也看看here