Java-приложение и grep - как я могу независимо обрабатывать вывод команды, переданной в grep, с двумя регулярными выражениями? - PullRequest
3 голосов
/ 30 января 2011

У меня есть приложение Java, использующее SSH-соединение, удаленно выполняющее команды CLI. Для конкретной команды я хотел бы передать вывод команды через два регулярных выражения, найти два коррелированных подмножества общего вывода и вернуть этот вывод обратно в мою программу.

Для каждого из двух регулярных выражений: <<strong> RE1 > & <<strong> RE2 > я хотел бы отформатировать результирующие выходные данные: <<strong> RE1out > & <<strong> RE2out > через <<strong> action1 > & <<strong> action2 > соответственно; затем верните окончательный результат, например (извините за псевдо-скрипт оболочки):

<command> | grep -e <RE1> -e <RE2> | (<REout1> given to <action1> and <REout2> given to   <action2>) yields <final_output>

Ответы [ 2 ]

3 голосов
/ 30 января 2011

Попробуйте это

<command> | tee >(grep -e <RE1> | <action1>) >(grep -e <RE2> | <action2>)
1 голос
/ 31 января 2011

Я бы использовал этот процесс, который временно создает пару временных файлов, но все еще содержит одну строку:

command | 
awk '/RE1/ {print >> "tmp1"} /RE2/ {print >> "tmp2"}' && 
{ action1 < tmp1; action2 < tmp2; rm tmp1 tmp2; }
...