尝试这个小实验。使用非常长的文本行(例如500个字符长)创建一个文件Foo.txt
,如下所示:
// Foo.txt
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
现在发出以下命令:
$ Get-Content Foo.txt | Select-String "a" | Out-File Foo2.txt
您会发现{@ 1}}中的长行字符串已细分为较小的一行。每条较小线的长度与控制台宽度相同。
为什么 Out-File 会在输出没有进入控制台时将长线分成较小的一行?
为什么Out-File不会破坏以下命令的行?
Foo2.txt
答案 0 :(得分:10)
您可以使用-width参数
调整Out-File中断行的位置$ Get-Content Foo.txt | Select-String "a" | Out-File -width 1000 Foo2.txt
答案 1 :(得分:10)
$ Get-Content Foo.txt | Select-String "a" | Add-Content Foo2.txt
使用Add-Content
(如果您要覆盖该文件,可以使用Set-Content
。)
答案 2 :(得分:5)
这可以解释为Get-Content Foo.txt | Select-String "a"
的结果属于MatchInfo
类型,而不是string
。
只是测试:
Get-Content Foo.txt | Select-String "a" | Format-list *