Java 在AIX上设置命令输出的列宽
我试图在我的Java应用程序中解析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
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 ...