Скрипт Powershell для анализа выбранной информации из txt файла и вывода в csv - PullRequest
0 голосов
/ 17 октября 2018

проверил часто задаваемые вопросы о разборе данных и попробовал пару идей, но ничего не работает так, как мне нужно.Мне нужно предложение о том, как создать сценарий PS, который будет читать следующую информацию в моем файле .txt и выводить только выбранную информацию в .csv

eamoptns.ftr.0009: LoyaltyPrint3 = "     included with your TV purchase"
eamoptns.ftr.0010: LoyaltyPrint3 = "     included with your TV purchase"

Grand Total: 2 match(es) found.

CSV-файл будет содержать три столбца:

Store    Install     Date

Нужен сценарий PS, чтобы захватить магазин # (0009) и добавить его в столбец Store.Если в этой строке в столбце установки указано «включено в стоимость покупки телевизора», добавьте «Истина», если не «Ложь», а затем добавьте столбец «Дата в дате».

Код попробуйте из комментария

$PSRoot = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition 
Get-ChildItem $PSRoot -Filter "*Results.txt" | 
  Where-Object { $_.Attributes -ne "Directory" } | ForEach-Object { 
    If (Get-Content $_.FullName | Select-String -Pattern "included with your TV purchase") { 
      New-Object -TypeName PSCustomObject -Property @{
        Club = $A
        Install = $B 
        Date = $C
      } | Export-CSV -Path $PSRoot\Test.csv -Append 
    } 
  }

1 Ответ

0 голосов
/ 17 октября 2018

В соответствии с предложением

  • выберите регулярное выражение, соответствующее вашим требованиям (см. regex101.com )
  • , выполните итерации и сравните сопоставленный текст
  • генерирует [PSCustomObject] для вашего CSV

## Q:\Test\2018\10\17\SO_52857274.ps1
$RE = [RegEx]'^.*?\.(\d{4}):[^"]+"\s*(included with your TV purchase|.*)"$'

$CSV = Select-String '.\my.txt' -Pattern $RE | ForEach-Object {
    IF ($_.Matches.Groups[2].Value -eq 'included with your TV purchase'){
        $Install = $True
    } else {
        $Install = $False
    }
    [PSCustomObject]@{
        Store   = $_.Matches.Groups[1].Value
        Install = $Install
        Date    = (Get-Date).Date
    }
}
$CSV
# $CSV | Export-CSV '.\my.csv' -NoTypeInformation

Пример вывода:

> Q:\Test\2018\10\17\SO_52857274.ps1

Store Install Date
----- ------- ----
0009     True 2018-10-17 00:00:00
0010     True 2018-10-17 00:00:00
0010    False 2018-10-17 00:00:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...