【发布时间】:2020-12-18 13:45:30
【问题描述】:
我正在尝试拆分出现在 Mac OSX 日志文件中的 df -h 命令的输出,该行如下所示:
//user@192.168.0.10/share 3.6Ti 1.0Ti 2.7Ti 28% 264402606 712347471 27% /private/tmp/mount something here
我需要的是输出
//user@192.168.0.10/share
3.6Ti
1.0Ti
2.7Ti
28%
264402606
712347471
27%
/private/tmp/mount something here
由于最终条目中出现空格,我无法拆分此内容,因此我不太确定如何处理。
任何建议将不胜感激。
--更新--
感谢您的所有意见,这是我想出的解决方案:
var fields = Regex.Split(line, @"[ ]{2,}|(?<=\d+\%?)\s+(?=\d+\%?)")?.ToList();
我会看看建议的答案,谢谢
【问题讨论】:
-
这一行的结构是多少常量或变量?哪些部分保持不变,哪些可以改变?以什么方式?
-
结构始终相同,但值可以改变。所以它总是以主机开始,然后是数值,以路径结束,但路径中可能有也可能没有空格
-
你有没有尝试过?您甚至不需要正则表达式,因为列是固定的并且值是右对齐的。您可以阅读第一行以确定每列的开始位置,然后直接读取子字符串
-
我尝试了各种不同的正则表达式,但它们都错误地分割了空格。另外,列的间距并不总是相等的,如果你看的话,有时会有多个空格分隔值。
-
" 另外,列的间距并不总是相等的,如果您看有时会有多个空格分隔值”,所以这些空格可以从一个日志行到另一个日志行有所不同?我们只看到 1 个日志行。但我们询问的是不同的日志行版本