Как конвертировать файл из DOS в Unix

Мне нужно конвертировать файл из DOS в Unix в PowerShell.

Я знаю, что это очень легко сделать в Unix:

dos2unix file newfile

2 ответа

Это может быть так же просто, как

Get-Content in.csv -raw | % {$_ -replace "`r", ""} | Set-Content -NoNewline out.csv

Выше метод будет работать на PowerShell версии 3+. Если вы ниже, вы можете использовать метод ниже. Почти так же, как один из других ответов здесь.

$csvdata = [io.file]::ReadAllText('in.csv') | % {$_ -replace "`r",""}
[io.file]::WriteAllLines('out.csv', $csvdata)

Попробуй это:

$txt = (Get-Content -Raw myFile.txt) -replace "`r`n","`n"
[io.file]::WriteAllText('c:\path\to\myFile.unix.txt', $txt)

я использовал WriteAllText скорее, чем Set-Content так как Set-Content добавляет возврат каретки и перевод строки в конец файла, и, кажется, нет никакого способа подавить это.

Я думаю, что -Raw параметр для Get-Content может быть PowerShell 3, так что если вы используете более раннюю версию, вам может потребоваться сделать это следующим образом:

$txt = [io.file]::ReadAllText('c:\path\to\myFile.txt') -replace "`r`n","`n"
[io.file]::WriteAllText('c:\path\to\myFile.unix.txt', $txt)
Другие вопросы по тегам