Java 在AIX上设置命令输出的列宽

Java 在AIX上设置命令输出的列宽,java,bash,shell,aix,Java,Bash,Shell,Aix,我试图在我的Java应用程序中解析df-Pg命令的输出,它将根据我的需要打印出来 以下是命令的输出: Filesystem GB blocks Used Available Capacity Mounted on /dev/hd4 1.00 0.30 0.70 31% / /dev/hd2 3.62 2.65 0.98 74% /usr /dev/hd9var 2.0

我试图在我的Java应用程序中解析
df-Pg
命令的输出,它将根据我的需要打印出来

以下是命令的输出:

Filesystem    GB blocks      Used Available Capacity Mounted on
/dev/hd4           1.00      0.30      0.70      31% /
/dev/hd2           3.62      2.65      0.98      74% /usr
/dev/hd9var        2.00      0.19      1.81      10% /var
/dev/hd3           2.88      1.61      1.27      56% /tmp
/dev/hd1           2.00      1.30      0.70      66% /home
/proc                 -         -         -       -  /proc
/dev/hd10opt       1.00      0.27      0.73      28% /opt
/dev/fslv00        2.88      1.25      1.63      44% /tsmfiles
/dev/fslv01        2.00      0.84      1.16      43% /opt/IBM/ITM
/dev/livedump      0.25      0.00      0.25       1% /var/adm/ras/livedump
/dev/DoOnceAIX      0.75      0.00      0.75       1% /DoOnceAIX
/dev/nmonlv        1.00      0.03      0.97       4% /var/perf/poa
/dev/fslv02       49.50     42.86      6.64      87% /u01
/dev/fslv03      685.00    312.62    372.38      46% /u02
akslltsm:/depot     60.50     43.06     17.44      72% /mnt
我的java解析器使用空格大小拆分此文本。当解析器读取行时,当hee看到至少1个空格字符时,它将拆分字符串。如您所见,列中有一些行(如“
GB块
”和“
挂载于
”),因此无法按需要拆分


我想要的是设置列宽(2+空格字符),让我的程序成功解析它。

捕获特殊情况并填充空格,调整列,然后撤消第一步中所做的操作

e、 g

然后用管道将它们连接起来:

sed -e ... | <your prog> | sed -e ...
sed-e…|sed-e。。。

对于这种情况,这是一种相当通用的技术。如果输入无法解析(使用您当时需要的任何定义),请更改输入以使其工作,对其进行解析,然后反转第一次更改。

为什么不扔掉第一行?好主意,但不是永久性的解决方案。我每天都要打印很多这样的命令输出。在某些情况下我还需要第一行。@AloneInTheDark,跳过第一行。然后,生成您自己的标题行。@sat正如我所说的,我有很多这样的命令。那么,有没有关于设置列宽的解决方案?是的,但最后一列没有选项卡。列之间只有一个空格字符。
sed -e ... | <your prog> | sed -e ...