如何使用PowerShell从应用程序中过滤字符流?

Chr*_*ian 2 powershell

一个powershell问题:我想提取由某个模式生成的字符流中的每一行,这些模式在伪代码中会是这样的:PS> <a_ps_command> <the_application_command_for_outputting_the_text_stream> | <my_filter > output_file.txt

在我的情况下,应用程序是一个CM工具,输出源文件的更改历史记录,(伪)模式应该是这样的: <a couple of numbers><a name><a time stamp><a line of characters>

干杯,基督徒

Kei*_*ill 5

PowerShell中的过滤cmdlet是Where-Object(别名Where?).您只需将SCM命令的输出传递给它.然后使用$ _来表示当前行并对其进行测试,例如:

tf hist .\Settings.StyleCop /i /stopafter:20 | Where {$_ -match '^\d+.*?Hack'}
Run Code Online (Sandbox Code Playgroud)

-Match运算符用于输出的当前行比较针对正则表达式.我^\d+用来过滤掉前两行tf hist输出(这是格式化字符串),然后我Hack在该行的任何其他地方搜索文本(例如在注释中查找).您可以修改和增强正则表达式以满足您的需求.