【发布时间】:2019-07-23 17:31:48
【问题描述】:
我有一个超过 200 万行的文本文件,我正在尝试删除所有换行符,将所有文本放在一行中。
我同时删除了所有多余的空白字符。
尝试 #1:我尝试使用 Visual Studio 2017,它只会在工作负载上阻塞和崩溃。Find and replace "\s+" with " "
尝试 #2: 我尝试使用 PowerShell,它成功完成,并将所有连续的空白字符组合成一个空格字符,但由于某种原因没有删除任何换行符。(Get-Content -path "Input.txt") -replace "\n", " " -replace "\r", " " -replace "\s+", " " | Out-File "Output.txt"
显然 Visual Studio 是不可能的,因为它无法处理这项工作。
但是为什么 PowerShell 会正确删除多余的空格,而不是换行符?
我做错了什么吗?
或者有没有更好的工具来完成这项工作?
【问题讨论】:
-
如果您使用
Get-Content,则默认返回一个数组,其中每一行都是数组中的索引元素。如果您想以这种方式替换换行符,您需要使用Get-Content -Raw,它将按原样输出文本。另一种方法是将数组元素与(Get-Content Input.txt) -join " "之类的空格连接起来。
标签: regex powershell command-line