gpt4 book ai didi

powershell - 按时间戳对行数组进行排序

转载 作者:行者123 更新时间:2023-12-03 01:29:46 24 4
gpt4 key购买 nike

我有一个大型数组(超过100k行),应进行排序。排序标准是行中的时间戳。天真的使用排序功能的方法不起作用。如何按日期/时间对其进行排序?

数组是文件内容。但是此示例显示了如何使错误:

$a = @()
$a += "Line SystemTime LocalTime Facility Severity ID Message"
$a += "0 1/10/2019 14:30:30,639 1/9/2019 15:30:30,639 Data base E ID:03590006 Init - Could not open file (lastError=0x00000037)"
$a += "2 1/9/2019 14:30:40,442 1/9/2019 15:30:40,442 FTP W ID:035A001A select failed, err:10038. Shutdown FTP"
$a += "5 1/9/2019 14:30:30,639 1/9/2019 15:30:30,639 Data base E ID:03590006 Could not connect to changed event."
$a += "3 1/9/2019 14:30:40,460 1/9/2019 15:30:40,460 Telnet W ID:02FE000E select failed, err:10038. Shutdown Telnet"

$a | sort

时间戳前面的行号将被忽略。显然,排序cmdlet按字母顺序排序。我怎样才能告诉它应该使用日期/时间?

最佳答案

如果您的数据是CSV,则最好的选择是将其转换为ConvertFrom-CSV cmdlet并按所需属性进行排序。

在您的示例中,可以在Sort-Object cmdlet中使用正则表达式来获取e。 G。第一个日期并将其转换为日期时间:

$a | Select-Object -Skip 1 | 
Sort-Object { [datetime]($_ -replace '^\d*\s*([^,]+).*', '$1')}

注意:我不得不跳过标题(第一行)

输出:
5 1/9/2019 14:30:30,639 1/9/2019 15:30:30,639 Data base        E ID:03590006 Could not connect to changed event.
2 1/9/2019 14:30:40,442 1/9/2019 15:30:40,442 FTP W ID:035A001A select failed, err:10038. Shutdown FTP
3 1/9/2019 14:30:40,460 1/9/2019 15:30:40,460 Telnet W ID:02FE000E select failed, err:10038. Shutdown Telnet
0 1/10/2019 14:30:30,639 1/9/2019 15:30:30,639 Data base E ID:03590006 Init - Could not open file (lastError=0x00000037)

关于powershell - 按时间戳对行数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59387167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com