2011-01-30 1 views
3

원격으로 CLI 명령을 실행하는 SSH 연결을 사용하는 Java 응용 프로그램이 있습니다. 특정 명령의 경우, 두 개의 정규 표현식을 통해 명령의 출력을 파이프 처리하여 전체 출력의 두 개의 상호 연관된 하위 집합을 찾고 해당 출력을 내 프로그램으로 되돌려 보내려고합니다.> & < RE2> I는 결과 출력 포맷하고자 < RE1 : 두 정규식 각각에 Java app 및 grep - 두 개의 정규식을 사용하여 grep에 전달 된 명령 출력을 어떻게 독립적으로 처리 할 수 ​​있습니까?

< RE1out> & < RE2out> < 통해 조치 1> & < action2 각각; 다음 (의사 쉘 스크립트를 용서하시기 바랍니다) 예를 들어, 최종 결과를 반환 :

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

실제로 Java에서 ** 다른 프로그램 **을 호출 할 예정입니까? 그런 이단 적이 아닌가? "자바는 길과 진리와 빛입니다. 아무도 Java를 통해 데이터를 얻지 못합니다." – tchrist

+1

그 결론을 어떻게 이끌어 낼지 모르겠지만 실제로 ... 나는이 질문을 확신하지 못합니다. 자바로 태그를 붙여야합니다 ... :) – aioobe

+0

두 작업의 출력을 기본 프로그램으로 반환 하시겠습니까, 아니면 정말로 명령의 결과가 반환된다는 의미입니까? –

답변

1
나는 일시적으로 임시 파일의 몇 가지를 만들어이 프로세스를 사용하십시오

하지만, 여전히 하나의 라이너입니다.

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

을 시도해보십시오이

<command> | tee >(grep -e <RE1> | <action1>) >(grep -e <RE2> | <action2>) 
관련 문제