gpt4 book ai didi

powershell - 从长字符串中提取日期和时间

转载 作者:行者123 更新时间:2023-12-04 01:50:34 27 4
gpt4 key购买 nike

我收到了一份格式糟糕的报告,本应是 CSV 格式,但实际上不是,所以我必须导入并转换它。我已经将它转换并且我有可用的数据但是在最后一列我有太多无用的数据并且想从字符串的开头和结尾提取日期和时间。

我尝试了几种不同的方法,但我似乎无法得到我想要的。

这是我正在运行的代码:

$csvPath = 'C:\Powershell\Test5.csv'
$csvData = Get-Content -Path $csvPath |
Select-Object -Skip 1 |
Out-String |
ConvertFrom-Csv
$AuditTrail = $csvData | Select-Object "Approval History"

$AuditTrail | foreach {
$entry = $_ -split 'Approved'
$entry[-2]
}

输出是:

12/11/2018 10:20 AM  Submitted for approval by Joseph Star  12/11/2018 12:00 PM  12/11/2018 05:16 PM  Submitted for approval by Joseph Star  12/12/2018 07:46 AM  12/13/2018 09:41 AM  Submitted for approval by Joseph Star  12/13/2018 10:28 AM  12/13/2018 05:16 PM  Submitted for approval by Joseph Star  12/14/2018 07:49 AM  12/14/2018 05:22 PM  Submitted for approval by Joseph Star  12/18/2018 10:14 AM  12/11/2018 10:06 AM  Submitted for approval by Jimmy Newton  12/14/2018 11:36 AM  12/11/2018 06:33 PM  Submitted for approval by Jimmy Newton  12/14/2018 11:37 AM  12/17/2018 10:28 AM  Submitted for approval by Jimmy Newton  12/18/2018 04:33 PM  12/13/2018 03:31 PM  Submitted for approval by Jimmy Newton  12/14/2018 11:37 AM  12/17/2018 10:33 AM  Submitted for approval by Jimmy Newton  12/18/2018 04:33 PM  12/10/2018 05:59 PM  Submitted for approval by Stan Henry  12/11/2018 09:10 AM  12/12/2018 10:59 AM  Submitted for approval by Stan Henry  12/14/2018 02:35 PM  12/12/2018 05:01 PM  Submitted for approval by Stan Henry  12/14/2018 02:15 PM  12/14/2018 10:12 AM  Submitted for approval by Stan Henry  12/14/2018 02:27 PM  12/16/2018 11:24 PM  Submitted for approval by Stan Henry  12/19/2018 01:12 PM  12/16/2018 11:25 PM  Submitted for approval by Stan Henry  12/18/2018 11:12 AM  

从该输出中,我想获取前 19 个字符(完整的日期和时间)并将其存储到一个变量中。然后我想获取最后 19 个字符(完整的日期和时间)并将其存储到另一个变量中。

最佳答案

最简洁的解决方案是用两个空格 分隔每一行,因为它们将开始和结束的日期分开,如Ansgar Wiechers指出:

$line = '12/11/2018 10:20 AM  Submitted for approval by Joseph Star  12/11/2018 12:00 PM'
$date1, $date2 = [datetime[]] ($line -split ' ')[0,-1]

对于基于正则表达式 的类似简洁解决方案,其中基于模式匹配 提取日期,请参阅seedie's answer ,可以简化为:

$line = '12/11/2018 10:20 AM  Submitted for approval by Joseph Star  12/11/2018 12:00 PM'
[regex] $regex = '\b\d{2}/\d{2}/\d{4} \d{2}:\d{2} (?:AM|PM)\b'
$date1, $date2 = [datetime[]] $regex.Matches($line).Value

关于powershell - 从长字符串中提取日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53877307/

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