我有一个包含以下几行的输入文件:
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。如何将这个荒谬的输出修复为正确的输出?
答案 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