2015-10-05 43 views
1

我有一個HTML文件,我想在每行的兩個HTML標籤之間導出內容,直到使用PowerShell的EOF。使用power shell讀取HTML文件的每一行,並在兩個HTML標籤之間導出文本

例子:

<tr valign="top"> 
<td class="ln"></td><td style="color: #000000; background-color: #efcb05; "><code><span class="sf17b16"> &nbsp; &nbsp; &nbsp; &nbsp;"software_name": "Security Update for Microsoft .NET Framework 4 Client Profile (KB2979575v2)",</span>&nbsp;</code></td> 
<td class="ln"></td><td style="color: #000000; background-color: #c0c0c0; "><code>&nbsp;</code></td> 
</tr> 
<tr valign="top"> 
<td class="ln"></td><td style="color: #000000; background-color: #efcb05; "><code><span class="sf17b16"> &nbsp; &nbsp; &nbsp; &nbsp;"software_version": 2,</span>&nbsp;</code></td> 
<td class="ln"></td><td style="color: #000000; background-color: #c0c0c0; "><code>&nbsp;</code></td> 
</tr> 

我想要的輸出

"software_name": "Security Update for Microsoft .NET Framework 4 Client Profile (KB2979575v2)" 
"software_version": 2" 
+1

哪些HTML標籤?你到目前爲止嘗試過什麼? –

+0

之間, ***,忽略「&nbsp」 – Prasae

回答

0

你可以使用一個簡單的正則表達式來獲取想要的內容,並使用-replace函數替換所有&nbsp;和使用Trim()去除空空格和逗號

$result = [regex]::Matches($content, 'class="sf17b16".*?>(.*?)</span>') 
$result | select { ($_.Groups[1].Value -replace '&nbsp;', '').Trim().Trim(',') } 

輸出:

"software_name": "Security Update for Microsoft .NET Framework 4 Client Profile (KB2979575v2)"                      
"software_version": 2 

注意$content是HTML的內容 - 如果你解析一個文件,它看起來像$content = Get-Content c:\yourfile.html

+0

這是完美的!感謝您的時間:-) – Prasae

+0

除此之外,每當正則表達式匹配時,它應該檢查緊接着的下一行。如果緊接着的下一行是「」,那麼它應該打印「Sample1」,否則打印「Sample2」。然後它應該繼續打印結果。然後去下一個正則表達式比賽等等。我對PS是全新的,所以容忍:-) – Prasae

+0

因爲這個問題已經回答,你應該接受答案(使用綠色的選中標記)並提出一個新問題。 –

相關問題