如何在 Windows 计算机上将 DOS 行尾转换为 UNIX

如何在 Windows 计算机上将 DOS 行尾转换为 UNIX

我需要在 Windows 命令脚本中创建一个带有 Linux 行尾的文件。

到目前为止我能得到的最接近的是这个PowerShell单行:

powershell.exe -Command "Get-ChildItem -File "D:\path\file.sh" | % { $x = get-content -raw -path $_.fullname; $x -replace [char[]](13),'' | set-content -path $_.fullname }"

这和我想要的非常接近了……美中不足的是它在文件末尾添加了一个额外的 CR+LF!有什么建议可以解决这个问题吗,或者有其他方法吗?我无法安装任何其他软件,例如 Cygwin 或 dos2unix,因为这是用于锁定的生产环境。

答案1

我能找到的最优雅的解决方案是:

((Get-Content $file) -join "`n") + "`n" | Set-Content -NoNewline $file

取自这里

答案2

这可能就是你所需要的:

powershell.exe -noninteractive -NoProfile -ExecutionPolicy Bypass -Command "& {[IO.File]::WriteAllText('file_lfonly.txt', ([IO.File]::ReadAllText('file_crlf.txt') -replace \"`r`n\", \"`n\"))};"

相关内容