是否可以grep xargs产生的命令的结果?
作为一个例子,我正在尝试以下命令
findbranch prj-xyz -latest|sed 's/^\(.*\/.*\)@@.*$/\1/'|xargs -I {} cleartool lsh {}|grep -m 1 'user'
但似乎grep正在findbranch返回的整个结果集上执行,而不是lsh的单个结果
作为一个例子我想从上面得到的是,对于findbranch和sed组合返回的每个文件,我想找到某个用户最后修改过的那个版本。
注意如果有问题,findbranch是一个内部实用程序。
答案 0 :(得分:2)
这种做法怎么样?
.... | xargs -I {} bash -c "cleartool lsh {}|grep -m 1 'user'"
我想,这个答案对你来说是不言自明的......
答案 1 :(得分:0)
为什么不使用两阶段命令?
之类的东西findbranch prj-xyz -latest|sed 's/^\(.*\/.*\)@@.*$/\1/' > /tmp/x ; for x in `cat /tmp/x`; do echo $x; done
一旦您看到$x
是xargs
所需的输入,您就可以进一步操纵它了
答案 2 :(得分:0)
如果你有GNU Parallel,这应该可以工作:
findbranch prj-xyz -latest|sed 's/^\(.*\/.*\)@@.*$/\1/'|parallel cleartool lsh {}'|'grep -m 1 'user'
它仍会产生多个shell,但至少可以使用更多的CPU来处理它。