我有一個充滿類似於下面內容的文件的目錄。我想複製//TEST:
之後和//
之前的所有內容,我想將日期和時間以及IPO複製到CSV中。將多個文本文件中的數據解析爲CSV
IPO 7 604 1148 17 - Psuedo text here doesnt mean anything just filler text, beep, boop.txt werqwerwqerw erqwerwqer 2. (test) On 7 July 2017 at 0600Z, wqerwqerwqerwerwqerqwerwqjeroisduhsuf //TEST: 37MGUI2974027//, sdfajsfjiosauf sadfu (test2) On 7 July 2017 at 0600Z, blah blah //TEST: 89MTU34782374// blah blah text here //TEST: GHO394749374// (this is uneeded)
現在,每個文件都有這個數據的多個實例,並且可能有數百個這樣的實例。
我想類似這樣的輸出成一個CSV:
89MTU34782374, 3 July 2016 at 0640Z, IPO 7 604 1148 17
我已經成功地創建以下面的,我覺得我在正確的軌道上:
$x = "D:\New folder\"
$s = Get-Content $x
$ipo = [regex]::Match($s,'IPO([^/)]+?) -').Groups[1].Value
$test = [regex]::Matches($s,'//TEST: ([^/)]+?)//').Groups[1].Value
$date = [regex]::Matches($s,' On([^/)]+?),').Groups[1].Value
Write-Host $test"," $date"," IPO $ipo
但是,我無法使它找到並選擇文件中的每個實例,並將它們打印到新行中。我還應該注意到它正在尋找數據的方式,每個文本文件的格式都與此類似。
我不僅在將文本文檔中的每個字符串/變量打印到新行上時遇到問題,而且在解決如何爲多個文件執行操作時遇到問題。
我曾嘗試以下,但它似乎發現它在尋找從第一個文件中的條款,隨地吐痰它儘可能多的文件都包含在目錄:
$files = Get-ChildItem "D:\New folder\*.txt"
$s = Get-Content $files
for ($i=0; $i -lt $files.Count; $i++) {
$ipo = [regex]::Match($s,'IPO([^/)]+?) -').Groups[1].Value
$test = [regex]::Matches($s,'//TEST: ([^/)]+?)//').Groups[1].Value
$date = [regex]::Matches($s,' On([^/)]+?),').Groups[1].Value
Write-Host $test"," $date"," IPO $ipo
}
沒有人有任何關於如何做到這一點的想法?
我在解釋這件事上做得不好。 每份文件都有一個IPO號碼。 每個TEST字符串都有與之相關的日期/時間。 可能有其他TEST字符串,但可以忽略它們,它們在沒有日期/時間的情況下被取消。不過,如果它們被納入產品,我可以很容易地清理它。 每個TEST +日期/時間組合應該有他們來自的IPO號碼
這工作完美,我想我應該提到,甚至包括第二次約會。我可以更好地說句實話。 基本上,每個文本文件頂部都有一個唯一的IPO號碼。 每個文本文件都有多個TEST子字符串和多個日期/時間子字符串。因此,csv需要將每個測試和日期/時間包含在其各自的IPO –
那麼您希望如何將這些多個日期和TEST子字符串相互關聯? –
好吧,評論的格式很糟糕。基本上,我希望TEST和日期/時間在他們出現在文檔中時在一起。當他們出現在文件中時,他們就會「相互」聯繫在一起。 IPO號碼應該反映它來自哪個文件 –