当认为文件有多行时,如何使PowerShell将文件读取为单行?

时间:2018-10-10 19:38:53

标签: powershell

我有一个包含以下几行的输入文件:

1000095710|SavRx
1000124602|Mason’s Pharmacy
1001130436|Regence
1001314900|HealthE Systems
1001322929|IT management

我用以下代码创建了一行

$line = $numValueYouSee + "|" + $fd.Replace("Client", "") #Client used to say ClientNameOfClientYouSeeNowAsSavRx

当我使用$FileText = gc "Path\To\File.txt"使用PowerShell读取新的输出文件时,它正在读取以下行:

1000095710
|SavRx

1000124602
|Mason’s Pharmacy

1001130436
|Regence

1001314900
|HealthE Systems

1001322929
|IT management

我可以通过单击箭头键来验证文件的行,但是在Notepad ++中,我可以看到额外的CR-LF。如何将这个荒谬的输出修复为正确的输出?

2 个答案:

答案 0 :(得分:1)

在我看来,您的数据字段具有结尾的CR字符。演示:

PS C:\Temp> $s = "1000095710`r|SavRx`r`r`n1000124602`r|Mason's Pharmacy`r`r`n"
PS C:\Temp> [IO.File]::WriteAllText('c:\temp\out.txt', $s)
PS C:\Temp> Get-Content .\out.txt
1000095710
|SavRx

1000124602
|Mason's Pharmacy

您可以在创建输出之前通过修剪字段来删除它们。

$line = $numValueYouSee.Trim() + "|" + $fd.Replace("Client", "").Trim()

答案 1 :(得分:0)

我也无法复制您的问题。也许您必须再次从记事本中保存文件。也许文本中存在隐藏的格式,例如隐藏的“`n”

您可以尝试以下方法:

$FileText = Import-Csv Path\To\File.txt -Header Number,Type -Delimiter "|" -Encoding Default