Powershell 7 - Set-Content и Out-file добавляют возврат каретки (CR) в мой файл - PullRequest
1 голос
/ 19 марта 2020

Я манипулирую файлом с помощью команды Get-Content, выполняю замену и затем отправляю его в Set-Content или Out-File. Но файл записывается с CR до всех моих переводов. В моем исходном файле есть перевод строки, и это нормально, но CR разбивает файл на предмет того, для чего он используется.

Я пробовал это Замена содержимого Powershell в файле добавляет избыточный возврат каретки

Но не могу заставить его работать. И я хотел бы избежать использования. NET если возможно

Вот мой код:

(Get-Content "FILE.TEMPLATE") -replace('SEQUENCE', "$NEWSEQUENCE") | Set-Content ("FILE.NEW")

или

(Get-Content "FILE.TEMPLATE") -replace('SEQUENCE', "$NEWSEQUENCE") | Set-Content ("FILE.NEW") -Encoding UTF8NoBOM

Я попытался установить кодировку с помощью ' -Кодирование 'после канала Set-Content, но это ничего не делает. Пробовал UTF8, UTF8NoBOM. Этот выходной файл предназначен для использования на коробке UNIX, поэтому CR разбивает файл.

Есть идеи?

1 Ответ

1 голос
/ 19 марта 2020

Потребовалось еще немного покопаться, и вот что сработало

(Get-Content "FILE.TEMPLATE" -Raw) -replace 'SEQUENCE', "$NEWSEQUENCE" | 
  Set-Content "FILE.NEW" -NoNewLine -Encoding UTF8NoBOM

Пришлось добавить -Raw в Get-Content, затем добавить -NoNewLine и -Encoding UTF8NoBOM к Set-Content.

Это будет работать только с PowerShell 6+, поскольку все, что ниже, не имеет UTF8NoBOM в качестве опции кодирования. Powershell 5 по умолчанию UTF8BOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...