В PowerShell как заменить возврат каретки - PullRequest
0 голосов
/ 11 мая 2018

В сценарии 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

Все они не могут удалить персонажа. Я также посмотрел на предложенные другие сообщения.

Есть ли предложения?

1 Ответ

0 голосов
/ 11 мая 2018

По умолчанию, 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

Примечание. Я изменил шаблон замены, чтобы заменить любую последовательность из одного или нескольких символов возврата каретки или новой строки одним пробелом

...