我有一个文本文件,其中包含一些内容,如下所示:
SnapshotCreateTime : 7/30/2015 9:15:24 AM
SnapshotCreateTime : 7/30/2015 9:18:45 AM
SnapshotCreateTime : 7/31/2015 7:13:26 AM
SnapshotCreateTime : 7/30/2015 9:22:46 AM
SnapshotCreateTime : 7/30/2015 9:26:07 AM
我需要做的是我需要检索每个的日期格式并将其写入另一个文本文件。我想出了如下的内容,但没有按预期工作:
$contents = Get-Content "Path\file.txt"
foreach($cont in $contents) {
$s = $cont -split ':'
$name = $s[1]
$name.Trim() | Add-Content "Path\newfile.txt"
}
上述脚本的结果如下:
7/30/2015 9
7/30/2015 9
7/31/2015 7
7/30/2015 9
7/30/2015 9
我真正需要的是:
7/30/2015
7/30/2015
7/31/2015
7/30/2015
7/30/2015
我知道select-string可能在这里工作,但我不能说除了d / mm / yyyy之外的特定字符串格式。任何想法或建议,以实现我提到的。任何帮助都会非常感激。
答案 0 :(得分:1)
您可以使用一个简单的正则表达式来选择日期并将字符串替换为捕获组:
$contents | % {
$_ -replace '.*: (.*/.*/....).*', '$1' |
Add-Content "Path\newfile.txt"
}
答案 1 :(得分:1)
你分开了':'这也是几个小时。你可以分割空间并采用第四个元素。
$contents = Get-Content "Path\file.txt"
foreach($cont in $contents) {
$s = $cont -split ' '
$name = $s[4]
$name.Trim() | Add-Content "Path\newfile.txt"
}
就我自己而言,我更喜欢@jsaak正则表达式,或使用[datetime]::ParseExact()
方法来获取日期。