考虑输出:
% { echo one; echo two; echo three; } | xargs -I{} -L1 echo test-{}
test-{} one
test-{} two
test-{} three
为什么没有{}
按照手册页(以及我的记忆)进行替换?
如何更改命令行以获取test-one
, test-two
,test-three
行作为输出?
答案1
去除-L 1
;它是由-I
(如手册页所述)暗示的,但在之后指定时它会覆盖它。
答案2
它无需“-L1”即可工作,因为它是隐式设置的。
{ echo one; echo two; echo three; } | xargs -I{} echo test-{}
test-one
test-two
test-three
答案3
如果您有 GNU Parallelhttp://www.gnu.org/software/parallel/安装后你可以这样做:
{ echo one; echo two; echo three; } | parallel echo test-{}
您可以简单地通过以下方式安装 GNU Parallel:
wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem
观看 GNU Parallel 的介绍视频以了解更多信息: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1