从文档中提取数据

Nat*_*ate 3 powershell

我有一个文本文件,其数据如下:

07:30 - 07:45PMTS09526052 | Sev9 | Location| | Due: 12/23/2016
NON PC HARDWARE - TROUBLESHOOT SW
Complete this Job
Run Code Online (Sandbox Code Playgroud)

这些行将在整个文档中多次显示,并带有变体,例如第一行上字母"PMT"之后的字母数字字符.

我需要找到一种方法,所以每当它找到"PMT"时,它会拉出那个和接下来的9个符号,将其放入CSV中,然后将"完成此作业"行放在CSV的下一个位置.

我知道我需要将模式设置为PMT[ST][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]($WLDir文件名在哪里).

Select-String $WLDir -pattern “PMT[ST][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]”
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚我的下一步行动是隔离该部分和第2行,并将它们设置为CSV格式的单元格数据.有人可以帮忙吗?我道歉,因为看起来我没有在这里完成我的作业,但我一直在尝试使用之前的问题一些嘿!脚本专家!作为参考,但我只是卡住了.

Mar*_*ndl 6

不是100%肯定是什么结果应该看起来像,但我认为你想有一个CSV带Time,TopicStatus列:

Select-String $WLDir -pattern '(PMT[ST]\d{8})' -Context 0,2 | ForEach-Object {
    [PSCustomObject]@{
        Time = $_.Matches.Groups[1].Value
        Topic = $_.Context.PostContext[0]
        Status = $_.Context.PostContext[1]
    }
} | ConvertTo-Csv -NoTypeInformation
Run Code Online (Sandbox Code Playgroud)

这将输出:

"Time","Topic","Status"
"PMTS09526052","NON PC HARDWARE - TROUBLESHOOT SW","Complete this Job"
Run Code Online (Sandbox Code Playgroud)