如何在Powershell中使用Regex查找和替换某些文本?

问题描述

我有以下脚本,并且我尝试使用以05开头的行中的测量值替换以10开头的行。但是,即使在notepad ++中也可以使用$ mat中使用的模式。 这就是我想要的样子

0100031     35327                    00002228            2144064             20200801  0430035604050430 0000000000  00BLT1  00000 
0500031     35327                    V4A                 +019.8  0.85220     14702.0     14643.0     01                           
1000031     35327                    V4A            80   +019.8  0.85220     14702.0     14643.0     V4A                 1        
0500031     35327                    V4A                 +019.0  0.85220     15698.0     15647.0     01                           
1000031     35327                    V4A            80   +019.0  0.85220     15698.0     15647.0     V4A                 1        
2000031     35327                    00002228            2144064           0052299.0   0052115.0   0017     035327
  $data = "0100031     35327                    00002228            2144064             20200801  0430035604050430 0000000000  00BLT1  00000 
0500031     35327                    V4A                 +019.8  0.85220     14702.0     14643.0     01                           
1000031     35327                    V4A            80   +018.8  0.85040     11026.0     10991.0     V2C                 1        
1000031     35327                    V4A            80   +022.9  0.85760     03676.0     03652.0     V4B                 1        
0500031     35327                    V4A                 +019.0  0.85220     15698.0     15647.0     01                           
1000031     35327                    V4A            80   +017.9  0.85040     11774.0     11746.0     V2C                 1        
1000031     35327                    V4A            80   +022.1  0.85760     03924.0     03901.0     V4B                 1        
2000031     35327                    00002228            2144064           0052299.0   0052115.0   0017     035327                
"
    
    $data
    Write-Host ""
    
    Write-Host "Replacing number of lines"
    Write-Host ""
    $summaryline= $data -replace '(^0500031\s{5}\d{5}\s{20}V4A.{60})(\s\d{2}\s)(.{26})','$1 01 $3'
    $summaryline
    Write-Host ""
    
    Write-Host "Matched lines"
    Write-Host ""
    $mat=$summaryline -match '^0500031.{30}V4A\s{17}(?<measure>.{43}).+\r\n10.{55}'
    $mat
    Write-Host ""

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)