Назад | Перейти на главную страницу

Разбор вывода консоли Java с помощью awk

Я пытаюсь использовать awk для анализа вывода, созданного java-приложением, но он не работает. Кажется, что команда после канала не может получить / увидеть данные, отправленные java-приложением.

Я выполняю следующую команду (с возвращением, сгенерированным командой):

[root@localhost]# java -jar jmxclient.jar usr:pass host:port java.lang:type=Threading ThreadCount
06/11/2010 15:46:37 -0300 org.archive.jmx.Client ThreadCount: 103

Мне нужна только последняя часть строки. Итак, я пытаюсь использовать awk (с трубкой в ​​конце строки |awk -F ':' '{print $4}':

[root@localhost]# java -jar jmxclient.jar usr:pass host:port java.lang:type=Threading ThreadCount|awk -F ':' '{print $4}'

Но вывод не анализируется. Он выбрасывает всю строку: 06/11/2010 15:46:37 -0300 org.archive.jmx.Client ThreadCount: 103

Я также пытался использовать |cut -f4 -d":" с тем же результатом: строка не анализируется.

Итак, мой вопрос: как мне проанализировать вывод, чтобы получить только число в конце строки?

TIA,

Боб

Как сказал Игнасио Васкес-Абрамс, это, вероятно, будет stderr. Также есть трюк с awk, который облегчит вам жизнь: $NF, которое является последним полем. Таким образом, я бы сделал что-то вроде этого:

java -jar jmxclient.jar usr:pass host:port java.lang:type=Threading ThreadCount 2>&1 | awk -F: '{print $NF}'

Журнал, вероятно, выводится на stderr.

Инструкции для bash