问题描述
||
如何使用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块”和“已使用”。
解决方法
正则表达式不是魔术解析项目符号。与其尝试使用正则表达式解析,不如直接获取所需的输出并阅读它,为什么不呢?
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];
}
, 您可以使用^\\S+\\s+(\\S+)
或在\\s+
上分割,跳过第一行。