如何使用regex从powershell中的文本文件中获取特定值?

时间:2016-09-28 09:54:56

标签: powershell

Linux 4.4.0-38-generic (ajaylinux)  09/27/2016  _x86_64_    (2 CPU)

07:22:03 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
07:22:03 PM  all    0.16    0.04    0.09    0.16    0.00    0.01    0.00    0.00    0.00   99.55

这是我的文本文件,任何人都可以帮助我。我需要使用上面的标题来获取值,例如在powershell中使用%idle 99.55。任何帮助人员

2 个答案:

答案 0 :(得分:1)

不要使用正则表达式。该文件看起来像包含结构化数据。读取它as CSV并将tab char指定为字段分隔符。从CSV数据中选择所需的列内容非常简单。

答案 1 :(得分:0)

使用正则表达式将两个或多个空格替换为,,使日志与CSV兼容:

$data = (Get-Content 'file.txt') -replace '\s{2,}', ',' | Select -skip 2 | ConvertFrom-Csv

由于%不是有效的标识符,因此用引号括起属性:$data.'%usr'
或者在转换前剥离角色:

$data = (Get-Content 'file.txt') -replace '\s{2,}', ',' -replace '%', '' |Select -skip 2 | 
        ConvertFrom-Csv
$data.usr