在PowerShell中如何替换回车符

问题描述 投票:0回答:2

在 PowerShell 脚本中,我将从 SQL Server 查询读取的数据导出到制表符分隔的 .csv 文件中。我需要删除所有回车符。

-replace '`r`n'
不起作用。我觉得这个角色是
char(13)

这是我的代码行不起作用:

(Get-Content $MyCSV_DOR) | % {$_ -replace '`r`n', " "} | out-file -FilePath $MyCSV_DOR -Force -Encoding ascii

我也尝试过以下方法:

`r, `n, \r, \n and \r\n

他们都未能删除角色。我还查看了建议的其他帖子。

有什么建议吗?

powershell replace carriage-return
2个回答
4
投票

默认情况下,

get-content
会自动将文件拆分为换行符上的行,如果
out-file
收到行数组,则会将换行符放回原处。所以你的
-replace
什么也不做,因为换行符已经被
Get-Content
删除了。您需要使用
-raw
参数将文件作为单个文本块读取。以下应该做你想要的

(Get-Content -Raw $MyCSV_DOR) -replace "[`r`n']+, ' ' | 
     Out-File -FilePath $MyCSV_DOR -Force -Encoding ascii -nonewline

注意:我更改了替换模式,以用单个空格替换一个或多个回车符或换行符的任何序列


0
投票

使用正则表达式匹配:-replace "[ ]"," "

© www.soinside.com 2019 - 2024. All rights reserved.