使用C#正则表达式解析Linux df输出

时间:2011-06-14 11:34:07

标签: c# .net regex shell

如何使用C#正则表达式解析df-Bk Linux命令输出?

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             7913216K  2348412K  5165992K  32% /
varrun                 257788K      108K   257680K   1% /var/run
varlock                257788K        0K   257788K   0% /var/lock
udev                   257788K       56K   257732K   1% /dev

我希望获得“1K-blocks”和“Used”。

2 个答案:

答案 0 :(得分:4)

正则表达式不是一个神奇的解析子弹。而不是尝试使用正则表达式进行解析,为什么不直接获得您想要的输出并阅读它?

df -Bk| awk '{print $2, $3}'

这将为您提供一组带有空格分隔字段的行。解析这个就变成了调用string.Split()

的问题
string[] output_lines; // presumably holds the output of df
for (int i = 0; i < output_lines.Length; i++)
{
    if (i == 0)
        continue;

    string[] b_u = output_lines[i].Split(" ");
    string blocks = b_u[0];
    string used = b_u[1];
}

答案 1 :(得分:0)

您可以使用^\S+\s+(\S+)或在\s+上拆分,跳过第一行。