2015-11-26 2 views
0

У меня есть файл, который в основном включает в себя содержание, как:значения Список, которые происходят между 2 строки

<INCOND NAME="DWH_YDWB-Start" ODATE="STAT" AND_OR="AND" /> 
<INCOND NAME="BBYSICH01.NR" ODATE="ODAT" AND_OR="AND" /> 
<INCOND NAME="YDWB_AB-Start" ODATE="STAT" AND_OR="AND" /> 
<ON CODE="NOTOK" STMT="*"> 
<DOSYSOUT OPTION="Copy" 
    PAR="\\$CTMSERVER$\Sysout\%%ODATE._%%JOBNAME._#%%RUNCOUNT..txt" /> 
</ON> 

Я просто хочу, чтобы получить список всех значений INCONDs, которые начинаются с ЯБ - которые были бы «BBYSICH01. NR»

Так я начал с:

get-content 'C:\Temp\test.xml' -ReadCount 1000 | 
foreach { $_ -match 'INCOND NAME=\"BBY' } 

ли перечислить все строки я хочу иметь, но я просто нужно значение„в списке, а не всю строку BBYSICH01.NR“и я совершенно не в эта точка , Пробовал разные способы, но всегда оказывался в десасте.

Есть ли простой способ извлечь только это значение «BBYSICH01.NR»?

Заранее спасибо Stefan

ответ

1

Используйте Выбрать струна командлетов и использовать регулярное выражение для извлечения текста следующим образом:

Select-String yourfile.txt -Pattern '(?<=<INCOND NAME=")BBY\w+\.\w+' | Select -ExpandProperty Matches | Select -ExpandProperty Value 

Должно быть намного быстрее, чем при использовании Get-Content

+0

Дэйв, спасибо большое! вы можете порекомендовать любую страницу, где я могу узнать больше о регулярном выражении? Я не совсем понимаю шаблон. –

+1

Один из моих любимых [www.regular-expressions.info] (http://www.regular-expressions.info/) –