Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java解析Unix命令输出_Java_Unix_Solaris - Fatal编程技术网

用Java解析Unix命令输出

用Java解析Unix命令输出,java,unix,solaris,Java,Unix,Solaris,我正在Unix中执行finger-m命令。它返回如下输出 Login Name TTY Idle When Where Sam Sam D S pts/2 Sun 13:25 10.xxx.xxx.xx Peter Peter M Thomas pts/1 58 Sun 12:25 10.xxx.xxx.xx 如何在Java程序

我正在Unix中执行
finger-m
命令。它返回如下输出

Login       Name               TTY         Idle    When    Where
Sam         Sam D S            pts/2            Sun 13:25  10.xxx.xxx.xx
Peter       Peter M Thomas     pts/1         58 Sun 12:25  10.xxx.xxx.xx
如何在Java程序中解析它

命令的输出中有空格和制表符,这两种组合。此外,生成的输出在空间和选项卡之间不是唯一的,因为在登录名和名称之间,它返回的是空间,但在其他选项卡之间是唯一的


是否有一种方法可以显示“仅结果”选项卡的输出,以便忽略空间和进程。

您考虑过使用正则表达式吗?您所说的“解析”是什么意思?你能给出一个你想要的Java数据结构的例子吗?还有,我不明白这句话:“有没有一种方法可以显示只显示结果的输出选项卡,这样我们就可以忽略空间和过程。”你真的想要的只是重新设置输出的样式吗,没有真正解析它?您是否考虑过从utmpx文件中读取原始数据,而不是试图解析供人读取而不是供程序解析的输出?我的数据结构看起来像LoginId、Name、LoggedInFrom、LoggedDate等。命令输出是字符串的形式,我正在读取该字符串。我想把Sam分配给LoginId。Sam D S登录名和LoggedInFrom至10.xx.xxx.xx。我该怎么做?有更简单的方法吗?步骤1:规范化数据。在我的测试中,
finger
不返回任何'\t',输出只包含空格,但是如果您看到选项卡,请使用正确的选项卡大小值通过管道将输出扩展到
。步骤2:使用从行开始的绝对偏移量解析规范化数据,以找到所需的列。这不是很可靠,但应该有效。我会读
/var/adm/utmpx
,就像@alanc建议的那样。