вот еще один способ сделать это.я не мог найти регулярное выражение, которое работало на всех вариантах, перечисленных в ссылке LotPings, поэтому я пошел со строковыми операторами.это, вероятно, намного медленнее, чем решение с регулярным выражением, но, похоже, работает.[ ухмылка ]
# fake reading in a text file as one multiline string
# in real life, use Get-Content -Raw
$InStuff = @'
--- \\path\to\file2.txt 2018-12-27 12:11:20.000000000 -0600
+++ \\path\to\file2.txt 2018-12-27 12:11:24.000000000 -0600
@@ -259,13 +259,12 @@
18684944<tab>10-01-20<tab>5.00
-21400198<tab>12-03-18<tab>75.21
18684944<tab>10-11-20<tab>5.00
@@ -333,13 +332,12 @@
26085691<tab>12-17-19<tab>144.28
-21400541<tab>12-03-18<tab>72.30
21400541<tab>01-03-19<tab>72.30
'@
$ChangeLines = $InStuff -split '@@.+@@' |
# get rid of any blank items from the split
Where-Object {$_} |
# leave out the header info
Select-Object -Skip 1 |
# split the context/change block into lines
# take the ones that start with either "+" or "-"
ForEach-Object {
($_ -split [environment]::NewLine).Where({$_ -match '^[-+].+$'})
}
$ChangeLines
вывод ...
-21400198<tab>12-03-18<tab>75.21
-21400541<tab>12-03-18<tab>72.30