如何解析来自Linux shell的“不适合文本处理”的长输出


How to parse a long output from Linux shell which is "not text-processing friendly"?

我是一个编程新手。我正在编写一个PHP应用程序,需要执行许多Linux shell命令,解析shell输出,然后在网页上显示这些信息。

我面临的问题:一些Linux shell命令的输出非常长,并且不"文本处理友好"。它们以一种易于人类阅读但在PHP中难以解析的方式排列。例如,我在PHP中正确解析ifconfig -a命令的输出时遇到了很大的问题。

谁能给我一些建议,什么是最好的方式来解析一个长Linux shell输出?例如,如果我的PC上有许多接口,ifconfig -a的输出可能会变得很长,不同的部分/段落显示不同接口的详细信息。

假设接口的数量是可变的,每个段落的输出行数也是可变的,我应该如何编写一个PHP函数来适应变化并从每个接口中提取重要信息(例如IP地址,netmask,广播等)?

这些程序的输出不稳定。前一段时间,DailyWTF有一集是关于这个的。当应用程序更新时,当环境设置不同时,或者如果代码是跨平台的,依赖于它的代码可能会中断。

标记B是正确的,如果机器应该读取此信息,则转到/proc或数据实际所在的任何地方。广告丰特斯!

如果你真的想破解它,preg_match上的行寻找有趣的模式。

explode()换行符('n)会生成每行只有一项的数组,当您循环遍历该数组时,并相应地使用preg_split()函数