Работа с переменной вне Foreach-Object - PullRequest
0 голосов
/ 29 мая 2018

У меня есть этот код, который работает как следует:

Get-Content $path\$newName -Encoding OEM |ForEach-Object {$_ -replace '<Num:(\d{8,20})>$','$1'}| Set-Content $path\$txtName -Encoding UTF8

Строка заменяется цифрами.Но я хотел бы иметь возможность использовать $ 1 вне цикла.

Например:

write-host $1

Например.Но если я это сделаю, это заметит выход.Есть предложения?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

На основе VivekKumarSingh s скрипт.

$InFile = '.\test.txt'
$OutFile= '.\test2.txt'
$RegEx = "<Num:(\d{8,20})>$"
$array = @()
Get-Content $InFile -Encoding OEM | ForEach-Object {
    if ($_ -match $RegEx ){$array += $matches[1]}
        $_ -replace $RegEx,"`$1"
} | Set-Content $OutFile -Encoding UTF8
$array

> gc .\test.txt
<Num:1234567890>
<Num:23456789101112>

> .\SO_50579315.ps1
1234567890
23456789101112

> gc .\test2.txt
1234567890
23456789101112
0 голосов
/ 29 мая 2018

Одним из способов будет присвоение $1 массиву, подобному этому -

$array = @()
Get-Content $path\$newName -Encoding OEM | ForEach-Object {$_ -replace '<Num:(\d{8,20})>$','$1'; $array += $1 } | Set-Content $path\$txtName -Encoding UTF8

Вы можете использовать значения $1, например $array[0], $array[1], $array[2] .. ии так далее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...