Pat*_*ney 4 powershell replace newline line
嗨,我已经研究了一段时间,但我尝试过的任何方法都没有用。原谅我再次提出这个问题,但我无法在Powershell中用空格替换新行
$path = "$root\$filename"
Get-Content $path | % $_.Replace "`r`n"," " | Set-Content "$root\bob.txt" -Force
Run Code Online (Sandbox Code Playgroud)
这是我尝试浏览此网站时尝试过的众多事情之一。
我正在使用Powershell v3
这里有几个问题。首先,按照您调用 Get-Content 的方式,通过管道发送的字符串中永远不会有换行符。这是因为 Get-Content 的默认工作方式是在换行符上拆分文件并为每一行输出一个字符串。其次,您的 Foreach 命令需要 {} 围绕替换命令。尝试这个:
Get-Content $path -Raw | Foreach {$_ -replace "`r`n",' '} |
Set-Content $root\bob.txt -Force
Run Code Online (Sandbox Code Playgroud)
该-Raw
参数指示Get-Content
将文件内容作为单个字符串读取。这将保留CRLFs
.
Keith Hill的有用答案很好地解释了您的代码存在的问题,并提供了可行的解决方案。
但是,Keith的解决方案在输出行上增加了尾随空格(如果您自己的解决方案尝试了,就可以这样做)。
这是一个避免此问题的更简单的选择。
(Get-Content $path) -join ' ' | Set-Content -Force $root\bob.txt
Run Code Online (Sandbox Code Playgroud)
(Get-Content $path)
返回行数组请注意,这和Keith的答案都需要将整个输入文件读入内存,这对于大文件可能存在问题。