如何在SQL输出的最后一列下获取值

时间:2014-10-01 17:59:04

标签: regex text-processing

我已将SQL查询的结果传送到日志文件中,并且在自由空间列下获得119 GB值时出现问题。

 [echo] SQL*Plus: Release 11.2.0.1.0 Production on Wed Oct 1 13:39:19 2014
 [echo] 
 [echo] Copyright (c) 1982, 2010, Oracle.  All rights reserved.
 [echo] 
 [echo] 
 [echo] Connected to:
 [echo] Oracle Database 11g Release 11.2.0.1.0 - 64bit Production
 [echo] 
 [echo] 
 [echo] Database Size        Used space       Free space
 [echo] -------------------- -------------------- --------------------
 [echo] 126 GB           7 GB         119 GB
 [echo] 
 [echo] SQL> Disconnected from Oracle Database 11g Release 11.2.0.1.0 - 64bit Production

上述输出和更多(即典型的SQL输出)都存储在Ant变量中。我在获取上面一块的最后一块时遇到了问题 - 即只有自由空间下的119 GB。任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:0)

你可以(仍然)用AWK获得这个,虽然在你编辑之后它更像是一个黑客而不是任何东西:

BEGIN {
    RS = "\n"
}

/Database Size/ {
    r = NR + 2
}

(NR == r) {
    nfm1 = NF - 1
    print $nfm1, $NF
}

答案 1 :(得分:0)

你应该告诉我们更多关于你的计算机是这个linux还是Windows?你想用Java或Bash回答吗?

无论如何,该行最后一行的正则表达式是:

[0-9]+\sGB$