2015-08-29 3 views
0

Я просто изучаю powershell и не могу найти, как запускать различные регулярные выражения с помощью powershell.Как regex несколько раз powershell

$input_path = 'C:\site-download\input.txt' 
$output_file = 'C:\site-download\output.txt' 
$regex = '(?<month>VPIP<\/span><span class=""right"">\d{2}.\d{1})' 
$regex2 = '(?<month>VPIP<\/span><span class=""right"">\d{2}.\d{1})' 
$regex3 = '(?<month>VPIP<\/span><span class=""right"">\d{2}.\d{1})' 
$regex... = '(?<month>VPIP<\/span><span class=""right"">\d{2}.\d{1})' 

select-string -Path $input_path -Pattern $regex -AllMatches | % { $_.Matches} | % { $_.Value }| 
Foreach-Object {$_ -replace '</span><span class=""right"">', ' = '} > $output_file 

$regex работает хорошо, но как я могу добавить $regex2 и $regex3 ... в OUTPUTFILE?

Благодаря

ответ

1

Вам просто нужно небольшое изменение в последнюю часть вашего трубопровода. Вместо того, чтобы использовать > $output_file, просто выполните вывод цикла foreach в командлет Out-File. Таким образом, вы должны иметь, чтобы ваша последняя строка кода выглядела так:

select-string -Path $input_path -Pattern $regex -AllMatches | 
    % { $_.Matches} | % { $_.Value } | 
    Foreach-Object {$_ -replace '</span><span class=""right"">', ' = '} | 
    Out-File $output_file 
+0

Большое спасибо за работу. Я также заменяю Out-File на Add-Content. – Elx

+0

@Elx Это работает, но понимает, что 'Add-Content' должен преобразовать вывод в строку перед тем, как записать его в файл, где' Out-File' просто выведет его в файл. Вы можете увидеть изменение формата в вашем файле в зависимости от того, что вы используете для каждого из них. –

Смежные вопросы