有没有办法在 PowerShell 5.1 中为 Out-File 设置默认的 EOL 分隔符?
Is there a way to set the default EOL separator for Out-File in PowerShell 5.1?
我正在寻找一种在使用 Out-File
.
编写文本时将默认 EOL 标记设置为 0x0A
的方法
在互联网上,我发现了很多例子,要么在文件已经写入后替换 0x0D 0x0A
,要么 -join
0x0A
上的行,然后将连接的文本写入文件。
我发现这两种方法都有些笨拙,因为我只想使用重定向运算符 >
.
编写文件
那么,有没有办法在 PowerShell 5.1 中设置 EOL 样式?
不,不幸的是,从 PowerShell 7.2 开始,没有 方法让 PowerShell 使用不同的换行符(EOL,换行符)格式。
总是使用 platform-native 换行符或序列(如 [Environment]::NewLine
中所反映的)——既用于分隔多个输入对象,也用于默认情况下 尾随 换行符。
要控制换行格式,您需要:
使用 -join
运算符将输入对象显式地与所选的换行符(序列)连接起来,然后是 another 实例,如果尾随 需要换行...
...和使用Set-Content
/Out-File
的-NoNewLine
开关(代替>
) 以防止附加 trailing platform-native 换行符。
至于未来可能的改进:
GitHub feature request #2872建议在Set-Content
中增加一个参数,具体来说就是允许指定换行格式;该请求已 green-lighted(很久以前),但尚未实施 - 但是,我认为它不够全面,并且对 Out-File
/ [=16 没有帮助=];看下一点。
GitHub feature request #3855 更普遍地要求将 -Delimiter
参数(以该名称镜像 Get-Content
的现有参数)添加到 Set-Content
/ Add-Content
、Out-File
和 Out-String
很遗憾,提案被拒绝了;如果没有,您将能够配置 >
- Out-File
的虚拟别名 - 使用 LF-only 换行符,例如,如下所示:
# WISHFUL THINKING
$PSDefaultParameterValues['Out-File:Delimiter'] = "`n"
我正在寻找一种在使用 Out-File
.
0x0A
的方法
在互联网上,我发现了很多例子,要么在文件已经写入后替换 0x0D 0x0A
,要么 -join
0x0A
上的行,然后将连接的文本写入文件。
我发现这两种方法都有些笨拙,因为我只想使用重定向运算符 >
.
那么,有没有办法在 PowerShell 5.1 中设置 EOL 样式?
不,不幸的是,从 PowerShell 7.2 开始,没有 方法让 PowerShell 使用不同的换行符(EOL,换行符)格式。
总是使用 platform-native 换行符或序列(如 [Environment]::NewLine
中所反映的)——既用于分隔多个输入对象,也用于默认情况下 尾随 换行符。
要控制换行格式,您需要:
使用
-join
运算符将输入对象显式地与所选的换行符(序列)连接起来,然后是 another 实例,如果尾随 需要换行......和使用
Set-Content
/Out-File
的-NoNewLine
开关(代替>
) 以防止附加 trailing platform-native 换行符。
至于未来可能的改进:
GitHub feature request #2872建议在
Set-Content
中增加一个参数,具体来说就是允许指定换行格式;该请求已 green-lighted(很久以前),但尚未实施 - 但是,我认为它不够全面,并且对Out-File
/ [=16 没有帮助=];看下一点。GitHub feature request #3855 更普遍地要求将
-Delimiter
参数(以该名称镜像Get-Content
的现有参数)添加到Set-Content
/Add-Content
、Out-File
和Out-String
很遗憾,提案被拒绝了;如果没有,您将能够配置
>
-Out-File
的虚拟别名 - 使用 LF-only 换行符,例如,如下所示:# WISHFUL THINKING $PSDefaultParameterValues['Out-File:Delimiter'] = "`n"