根据时间查找最新的字符串并显示它们

时间:2015-07-23 09:04:33

标签: powershell

我有一个文本文件,如下所示:

testdatabase-21-07-15-12-00
testdatabase-21-07-15-18-00
testdatabase-21-07-15-23-00
testdatabase-22-07-15-12-00
testdatabase-22-07-15-18-00
testdatabase-22-07-15-23-00
and many more like this (dynamically generated)

我正在比较(21 / 22-07-15)与另一个文本文件,如果找到匹配,我需要查看哪个是最新的。比如,如果找到日期21-07-15的匹配,我需要从21的许多中检索最新的(23)。与22的情况相同,....如果找到匹配。

到目前为止,我所做的是:

$temp = Get-Content "C:\RDS\temp.txt"
foreach($te in $temp) 
{
  $t = $te -split '-'
  $da = $t[1]
  $mo = $t[2]
  $yea = $t[3]
  if("$da-$mo-$yea" -match $temp1)
  {
  # need to write the concept here
  }else
  {
   #nothing
  }
  }

我怎样才能完成这项工作。任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:1)

您可以通过计算属性对输入文件中读取的行进行排序:

$fmt     = 'dd-MM-yy-HH-mm'
$culture = [Globalization.CultureInfo]::InvariantCulture

Get-Content "C:\RDS\temp.txt" |
  sort { [DateTime]::ParseExact(($_ -split '-', 2)[1], $fmt, $culture) } |
  select -Last 1