如何将文件从DOS转换为Unix

5

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

我知道在Unix系统下可以非常容易地完成此操作:

dos2unix file newfile

为什么不在*nix系统中进行转换呢?或者使用Cygwin的工具来完成同样的任务,而不是重新发明轮子。 - vonPryz
使用PowerShell替换CRLF - phuclv
2个回答

9
这可能很简单,就像...
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)

“-NoNewline” 似乎不存在。 - dan-gph
我的答案已更新,现在可以在v3之前的版本中使用。 - Jower

3

试试这个:

$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参数是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)

是的,参数“-Raw”仅存在于PowerShell v3及以上版本中。但是,如果您正在使用.NET方法编写代码,出于对称性的原因,我建议您仍然使用.NET方法进行读取。 - Ansgar Wiechers
第一部分运行得非常顺利! - Antebios

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接