【问题标题】:how to convert a file from DOS to Unix [closed]如何将文件从 DOS 转换为 Unix [关闭]
【发布时间】:2015-08-18 05:09:49
【问题描述】:

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

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

dos2unix file newfile

【问题讨论】:

  • 为什么不在*nix系统中进行转换?或者使用 Cygwin 的工具来做同样的事情,而不是重新发明轮子。

标签: powershell dos2unix


【解决方案1】:

可以这么简单

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 似乎不存在。
  • 使用 v3 之前的版本更新了我的答案。
【解决方案2】:

试试这个:

$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 在文件末尾添加了回车符和换行符,而且似乎没有任何方法可以抑制它。

我认为Get-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 方法来读取,如果只是出于对称原因。
  • 第一部分就像一个魅力!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 1970-01-01
  • 2013-12-17
  • 1970-01-01
  • 2014-02-27
  • 2010-10-13
相关资源
最近更新 更多