【问题标题】:Parse Linux df output with C# regular expressions使用 C# 正则表达式解析 Linux df 输出
【发布时间】:2011-06-14 11:34:06
【问题描述】:

如何使用 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”。

【问题讨论】:

  • 我认为你应该提供更多来获得帮助。
  • 示例输出将大有帮助。
  • 您能否展示命令示例并描述您需要解析的具体内容?
  • 您是否考虑过首先将df 的输出通过awk 进行管道传输? (linuxfocus.org/English/September1999/article103.html)
  • 到目前为止,您的正则表达式如何?你会说正则表达式,还是在寻找代码猴子?

标签: c# .net regex shell


【解决方案1】:

正则表达式不是一个神奇的解析子弹。与其尝试使用正则表达式进行解析,不如更直接地获取您想要的输出并直接读取它?

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];
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-27
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 2015-12-22
      相关资源
      最近更新 更多