2015-01-29 8 views
4

xargs에 의해 생성 된 명령의 결과를 grep 할 수 있습니까? 예를 들어 나는 다음과 같은 명령xargs에 의해 생성 된 명령의 개별 결과에 grep 수행

findbranch prj-xyz -latest|sed 's/^\(.*\/.*\)@@.*$/\1/'|xargs -I {} cleartool lsh {}|grep -m 1 'user' 

을 시도하지만 것입니다

그렙처럼 findbranch에 의해 반환 된 전체 결과 집합을 실행, 내가 원하는 예를 들어 LSH

의 개별적인 결과 위에서 findbranch와 sed가 결합하여 반환 한 모든 파일에 대해 특정 사용자가 마지막으로 수정 한 버전을 찾고 싶습니다.

참고주의 사항이있는 경우 findbranch는 내부 유틸리티입니다.

답변

0

왜 2 단계 명령을 사용하지 않습니까?

findbranch prj-xyz -latest|sed 's/^\(.*\/.*\)@@.*$/\1/' > /tmp/x ; for x in `cat /tmp/x`; do echo $x; done 

당신이 $x 참조하면 같은 당신이 xargs에 필요한 입력이 더 방법이 방법에 대해 그것을

2

을 조작 할 수있다?

.... | xargs -I {} bash -c "cleartool lsh {}|grep -m 1 'user'" 

것 같아요,이 대답은 ... 당신을 위해 자기 설명이다

+0

예 귀하의 요지를 봅니다. 모든 입력 라인에 대해 쉘을 생성하지 않고 할 수 있는지 궁금합니다. 이게 유일한 옵션 인 것처럼 보입니다. – Abhijit

0

이 작동한다고 GNU가 병렬있는 경우 :

findbranch prj-xyz -latest|sed 's/^\(.*\/.*\)@@.*$/\1/'|parallel cleartool lsh {}'|'grep -m 1 'user' 

그것은 여전히 ​​여러 조개를 생성하지만,에 최소한 더 많은 CPU를 사용하여 처리 할 수 ​​있습니다.