2014-10-01 2 views
0

Я передал результат SQL-запроса в файл журнала, и у меня возникли проблемы с получением значения 119 ГБ в столбце Free Space Column.Как получить значение под последним столбцом SQL-вывода

[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 ГБ в Free Space. Любая помощь была бы оценена.

+1

разместить еще несколько строк. –

+0

pipe to 'sed -n 's/\ [echo \] \ s * \ d * \ sGB \ s * \ d * \ sGB \ s * \ (\ d * \) \ sGB/\ 1/p'' может быть? – HuStmpHrrr

+0

Это работает в окне окна в настоящее время, поэтому невозможно запустить sed. – Mosinel

ответ

0

Вы можете (до сих пор) получить это с AWK, хотя после редактирования это больше, чем что-либо хака:

BEGIN { 
    RS = "\n" 
} 

/Database Size/ { 
    r = NR + 2 
} 

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

Я думаю, что regex, вероятно, самый простой способ получить то, что мне нужно. Я запускаю пакетный файл из сценария ANT, который я написал так, как только у меня есть вышеупомянутый вывод, хранящийся в моем журнале, я думал об использовании задачи propertyRegex, чтобы получить то, что мне нужно. Однако выражение регулярного выражения для получения 119 ГБ действительно отключает меня. – Mosinel

+0

Это было до того, как вы добавили контекст – shadowtalker

0

Вы должны сказать нам больше о вас компьютер это линукс или Windows? Вы хотите отвечать на Java или Bash?

Во всяком случае регулярное выражение для последней Гб линии является:

[0-9]+\sGB$ 
+0

Он работает на компьютере с Windows. Я просто ищу выражение регулярного выражения, которое я использую с задачей propertyregex ant. Я попробовал то, что вы разместили выше, но он ответил так: '[echo] Размер базы данных \t Используемое пространство \t Свободное пространство [echo] -------------------- -------------------- -------------------- [echo] 126 GB \t \t 7 GB \t \t 119 GB [эхо] [эхо] SQL> отсоединен от Oracle Database 11g Release 11.2.0.1.0 - 64-битных производств [эхо] бесплатно ПРОСТРАНСТВА: $ {free_space} ' – Mosinel

+0

Я должен addmit, что я не знаком с ant taks или anythign windows realted, но попробуйте мое обновленное регулярное выражение. Там probaily - это еще немного способов сделать это, но мне сложно знать, не пытаясь вытащить вашу машину. – sgp667

+0

@Mosinel, проверено и работает с 'egrep '[0-9] {3} \ sGB $' -o' или' egrep '[0-9] + \ sGB $' -o', учитывая то, что вы опубликовали. – shadowtalker

Смежные вопросы