我使用的是 macbook m1,当我使用本机时wc -l $file
我闪电般地得到结果,几乎可以肯定是因为我可以直接传递文件。但是,我不知道如何使用 powershell 执行此操作,并且我被迫将数据汇集到stdout
其中,即使对于wc
很慢(但仍然比Measure-Object
powershell中有没有更快的方法来获取文件中的行数?喜欢wc -l $file
fast?
PS /Users/cbongior/dev/oracle/dart-ingestion/omc> Measure-Command {Get-Content ./final_class2.csv | Measure-Object -Line}
Days : 0
Hours : 0
Minutes : 1
Seconds : 8
Milliseconds : 684
Ticks : 686847045
TotalDays : 0.000794961857638889
TotalHours : 0.0190790845833333
TotalMinutes : 1.144745075
TotalSeconds : 68.6847045
TotalMilliseconds : 68684.7045
PS /Users/cbongior/dev/oracle/dart-ingestion/omc> Measure-Command { wc -l ./final_class2.csv }
Days : 0
Hours : 0
Minutes : 0
Seconds : 0
Milliseconds : 166
Ticks : 1663259
TotalDays : 1.92506828703704E-06
TotalHours : 4.62016388888889E-05
TotalMinutes : 0.00277209833333333
TotalSeconds : 0.1663259
TotalMilliseconds : 166.3259
PS /Users/cbongior/dev/oracle/dart-ingestion/omc> Measure-Command { cat ./final_class2.csv | wc -l }
Days : 0
Hours : 0
Minutes : 0
Seconds : 51
Milliseconds : 187
Ticks : 511870216
TotalDays : 0.00059244237962963
TotalHours : 0.0142186171111111
TotalMinutes : 0.853117026666667
TotalSeconds : 51.1870216
TotalMilliseconds : 51187.0216
Get-Content
已知速度很慢,因为它将 ETS 属性附加到每行。一种简单有效的方法是使用File.ReadLines https://learn.microsoft.com/en-us/dotnet/api/system.io.file.readlines?view=net-7.0 and Enumerable.Count https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.count?view=net-7.0:
[System.Linq.Enumerable]::Count(
[System.IO.File]::ReadLines((Convert-Path ./final_class2.csv)))
Or just File.ReadAllLines https://learn.microsoft.com/en-us/dotnet/api/system.io.file.readalllines?view=net-7.0:
[System.IO.File]::ReadAllLines((Convert-Path ./final_class2.csv)).Length
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)