cat joined.txt | xargs -t -a <(cut --fields=1 | sort -u | grep -E '\S') -I{} --max-args=1 --max-procs=4 echo "mkdir -p imdb/movies/{}; grep '^{}' joined.txt > imdb/movies/{}/movies.txt" | bash上面的代码可以工作,但是用下面的重定向代替代码开始时的冗余猫是行不通的,会导致输入输出错误。
< joined.txt xargs -t -a <(cut --fields=1 | sort -u | grep -E '\S') -I{} --max-args=1 --max-procs=4 echo "mkdir -p imdb/movies/{}; grep '^{}' joined.txt > imdb/movies/{}/movies.txt" | bash发布于 2014-12-21 05:12:01
在这两种情况下,应该从进程替换(而不是xargs)中读取xargs命令,因此为了完全安全起见,应该将管道或输入重定向放在进程替换中。实际上,两者都不是必要的;cut只需将joined.txt作为一个参数。
xargs -t -a <( cat joined.txt | cut ... ) ... | bash或
xargs -t -a <( cut -f1 joined.txt | ... ) ... | bash但是,跳过整个进程替换并将该管道的输出输送到xargs将是最清晰的。
cut -f joined.txt | sort -u | grep -E '\S' | xargs -t ...https://stackoverflow.com/questions/27585790
复制相似问题