如何将文件从DOS转换为Unix

jud*_*udi 2 powershell dos2unix

我需要在PowerShell中将文件从DOS转换为Unix。

我知道在Unix中很容易做到:

dos2unix file newfile
Run Code Online (Sandbox Code Playgroud)

Jow*_*wer 5

可能很简单

Get-Content in.csv -raw | % {$_ -replace "`r", ""} | Set-Content -NoNewline out.csv
Run Code Online (Sandbox Code Playgroud)

上面的方法将在Powershell版本3+上运行。如果低于此值,则可以改用下面的方法。几乎与这里的其他答案之一相同。

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


dan*_*gph 3

尝试这个:

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

我使用WriteAllText而不是Set-Content因为Set-Content在文件末尾添加了回车符和换行符,并且似乎没有任何方法可以抑制它。

我认为-Raw参数 toGet-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)
Run Code Online (Sandbox Code Playgroud)