簡體   English   中英

Powershell正則表達式替換csv文件中列的字符串

[英]powershell regex replace string from column in csv file

我需要從Powershell中的csv文件中提取值。 這是CSV文件的示例:

"1","ANYDATA-481190-131","<ul>
<li><strong>487410-131</strong> (prateado)</li>
<li><strong>502478-131</strong></li>
<li><strong>555996-131</strong> (prateado)</li>
<li><strong>AEQT6T11110</strong></li>
<li><strong>AEQT6T00210</strong></li>
</ul>"

我需要提取標記<strong></strong>之間的值,並用逗號將它們放在新的CSV文件中,如下所示:

"1","ANYDATA-481190-131","487410-131, 502478-131, 555996-131, AEQT6T11110, AEQT6T00210"

編輯:

這是將來搜索的答案:

import-csv $CSV -delimiter "," -Header 1,2,3 | Select '1','2',@{n='3';e={[regex]::Matches(($_.3).Split("`n"),"(?<=<strong>)(.*?)(?=</strong>)").Value -join ", "}} | Export-csv $CSV2 -Encoding UTF8 -Notype

對於名為1、2和3的3列,其中$ CSV是原始CSV文件,而$ CSV2是目標文件,

可以不使用正則表達式嗎?

ConvertFrom-Csv @'
"1", "ANYDATA-481190-131", "<ul>
<li><strong>487410-131</strong> (prateado)</li>
<li><strong>502478-131</strong></li>
<li><strong>555996-131</strong> (prateado)</li>
<li><strong>AEQT6T11110</strong></li>
<li><strong>AEQT6T00210</strong></li>
</ul>"
'@ -Header 1, 2, 3 -Delimiter ','|
  Select-Object '1', '2', @{
    n='3'
    e={
      $ofs=','
      """$(
        [xml]$_.3|
          Select-Object -ExpandProperty ul|
          Select-Object -ExpandProperty li|
          Select-Object -ExpandProperty strong
      )"""
    }
  }

1 2                  3                                                       
- -                  -                                                       
1 ANYDATA-481190-131 "487410-131,502478-131,555996-131,AEQT6T11110,AEQT6T00210"

在線嘗試!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM