PowerShell:为什么Out-File将长行分成较小的行?

Ash*_*ppa 18 powershell

试试这个小实验.Foo.txt使用非常长的文本行(比如500个字符长)创建一个文件,如下所示:

// Foo.txt
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
Run Code Online (Sandbox Code Playgroud)

现在发出以下命令:

$ Get-Content Foo.txt | Select-String "a" | Out-File Foo2.txt
Run Code Online (Sandbox Code Playgroud)

你会发现长串的字符串已被分解为更小的行Foo2.txt.每条较小的线的长度与控制台宽度相同.

当输出没有进入控制台时,为什么Out-File会将长行分成较小的一行?

为什么Out-File不会破坏以下命令的行?

$ Get-Content Foo.txt | Out-File Foo3.txt
Run Code Online (Sandbox Code Playgroud)

Pol*_*hix 13

您可以使用-width参数调整Out-File中断行的位置

$ Get-Content Foo.txt | Select-String "a" | Out-File -width 1000 Foo2.txt
Run Code Online (Sandbox Code Playgroud)


Tah*_*san 10

$ Get-Content Foo.txt | Select-String "a" | Add-Content Foo2.txt
Run Code Online (Sandbox Code Playgroud)

使用Add-Content(或者Set-Content如果您希望覆盖文件,则可以使用).


JPB*_*anc 6

这可以通过以下事实来解释:结果Get-Content Foo.txt | Select-String "a"是类型MatchInfo,它不是a string.

只是测试:

Get-Content Foo.txt | Select-String "a" | Format-list *
Run Code Online (Sandbox Code Playgroud)