Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除PowerShell中的额外空间_Powershell_Scripting - Fatal编程技术网

删除PowerShell中的额外空间

删除PowerShell中的额外空间,powershell,scripting,Powershell,Scripting,我想使用PowerShell删除多余的空格,并用条目之间的单个逗号替换它们,这样我就可以将结果转换为可工作的CSV文件进行进一步分析 这是我的密码 Get-Content –path C:\Users\USERNAME\Desktop\results.txt| ForEach-Object {$_ -replace "\s+" " " } | Out-File -filepath C:\Users\USERNAME\Desktop\results.cs

我想使用PowerShell删除多余的空格,并用条目之间的单个逗号替换它们,这样我就可以将结果转换为可工作的CSV文件进行进一步分析

这是我的密码

Get-Content –path C:\Users\USERNAME\Desktop\results.txt| ForEach-Object {$_ -replace "\s+"  " " } |  Out-File -filepath C:\Users\USERNAME\Desktop\results.csv
在文本文件中,初始结果如下所示:

 entry     entry     entry    (all separated with 5 spaces)
我希望它看起来像这样:

进入,进入,进入


因此Excel会将它们放在单独的单元格中。

您很接近,但您需要用一个“
”、“
代替
。假设您的文本文件行如下所示。我不知道你是不是想让前导/尾随空间在那里,但没关系

“条目”

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

$\u.Trim()-替换“\s+”,“
使用Trim删除外部空格,以防止CSV中出现额外值以防万一。

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


如果您想用正则表达式替换字符,可以用另一种方法来完成。也请看一看。

只需对我们的文件说一句警告。默认编码是Unicode
((Get Content'entry.txt')-replace('\s{2,5}',',')).Trim()| Out File-Encoding ascii Out.csv
如果需要ascii编码,可以将文件替换为使用默认ascii编码的设置内容。@kamikatze很高兴了解编码。在本例中,我只是按照OP的输出进行操作。而且我的oneliner是错误的。首先是Trim(),然后是-replace,否则后面的空格将使用逗号。我没有解释那件事。我如何对自己投否决票?:)@kamikatze正确更新您的评论并使用反勾号。一旦准备好,只需删除不正确的评论。不管怎样,我的答案中基本上已经包含了这一点。