我有幾個單行 xml 檔案,我想從中提取特定標簽的內容<LIFNR>。我使用以下兩行電源外殼設法做到了這一點:
get-content P:\Webservice\21*_*CR_d*.xml | foreach-object { $_ -replace '>', ">`r`n" } > xmls_newline.txt
get-content .\xmls_newline.txt | Select-String -Pattern '.*<\/LIFNR>'
但是,如果我想跳過創建中間文本檔案的步驟,則無法獲得相同的結果。
$xml = get-content P:\Webservice\21*_*CR_d*.xml | foreach-object { $_ -replace '>', ">`r`n" }
$xml | Select-String -Pattern '.*<\/LIFNR>'
或者
get-content P:\Webservice\21*_*CR_d*.xml | foreach-object { $_ -replace '>', ">`r`n" } | Select-String -Pattern '.*<\/LIFNR>'
每個只是在 foreach-object 陳述句中列印字串拆分的結果,忽略 Select-String 命令。
有人可以向我解釋與作業解決方案相比后兩種嘗試有何不同嗎?
uj5u.com熱心網友回復:
Get-Content將每一行輸出為一個單獨的字串。要模擬相同的行為,請在之后拆分字串>而不是附加換行符:
Get-Content P:\Webservice\21*_*CR_d*.xml |ForEach-Object { $_ -split '(?<=>)' } | Select-String -Pattern '.*<\/LIFNR>'
該構造(?<=...)是后向斷言 - 這樣,PowerShell 將在之后立即拆分為零長度的字串>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/381814.html
標籤:电源外壳
