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

发布于 2024-11-15 11:40:54 字数 416 浏览 0 评论 0原文

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

How do I parse the df-Bk Linux command output with C# regular expressions?

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

I wish to get "1K-blocks" and "Used".

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

仅冇旳回忆 2024-11-22 11:40:54

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

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

Regex is not a magic parsing bullet. Rather than try to parse with regex, why not get the output you want more directly and just read it?

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

This will get you a set of lines with space-delimited fields. Parsing this becomes a matter of calling 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];
}
蹲墙角沉默 2024-11-22 11:40:54

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

You could use ^\S+\s+(\S+) or split on \s+, skip first line tho.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文