我正在尝试在非常大的文本文件上运行以下命令。但是,它很慢
((cat largefile.txt | select -first 1).split(",")).count()
在PowerShell中是另一种快速方式吗?似乎命令将扫描整个文件,无论如何。
答案 0 :(得分:12)
要仅获取文本文件中的前x行数,请使用-totalcount参数:
((Get-Content largefile.txt -totalcount 1).split(",")).count
答案 1 :(得分:9)
比这更糟糕 - 它将加载整个文件并将其转换为字符串数组。
使用本机.NET库仅加载第一行:
$reader = [System.IO.File]::OpenText("largefile.txt")
$line = $reader.ReadLine()
$reader.Close()
(借鉴How to process a file in Powershell line-by-line as a stream)