如何使用powershell计算csv文件中的行数?我试过这样的东西
Get-Content -length "C:\Directory\file.csv"
或
(Get-Content).length "C:\Directory\file.csv"
但这些结果是错误的。
发布于 2011-07-28 16:11:29
通过管道将其传送到Measure-Object
cmdlet
Import-Csv C:\Directory\file.csv | Measure-Object
发布于 2012-12-21 22:48:20
Get-Content和Measure-Object对于小文件来说很好,但是它们对内存的效率都非常低。我在处理大文件时遇到了真正的问题。
在使用这两种方法计算1 1GB文件中的行数时,Powershell会耗尽服务器上的所有可用内存(8 1GB),然后开始对磁盘进行分页。我把它放了一个多小时,但它仍然在磁盘上分页,所以我杀了它。
对于大文件,我发现的最好的方法是使用IO.StreamReader从磁盘加载文件,并使用一个变量对每行进行计数。这使内存使用量降到了非常合理的25MB,而且速度要快得多,1 6GB文件中的行数大约需要30秒,而6 6GB文件中的行数则需要几分钟。无论你的文件有多大,它都不会占用不合理的RAM:
[int]$LinesInFile = 0
$reader = New-Object IO.StreamReader 'c:\filename.csv'
while($reader.ReadLine() -ne $null){ $LinesInFile++ }
上面的代码片段可以插入到使用get-content或measure-object的任何地方,只需引用$LinesInFile变量来获取文件的行数。
发布于 2019-03-18 01:33:59
您可以简单地在powershell中使用unix,如comand。
如果将test.csv归档,则用于获取行数命令为
gc test.csv | Measure-Object
https://stackoverflow.com/questions/6855814
复制相似问题