首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法替代冗余cat的重定向

问无法替代冗余cat的重定向
EN

Stack Overflow用户
提问于 2014-12-21 00:51:21
回答 1查看 74关注 0票数 1
代码语言:javascript
复制
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

上面的代码可以工作,但是用下面的重定向代替代码开始时的冗余猫是行不通的,会导致输入输出错误。

代码语言:javascript
复制
< 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-21 05:12:01

在这两种情况下,应该从进程替换(而不是xargs)中读取xargs命令,因此为了完全安全起见,应该将管道或输入重定向放在进程替换中。实际上,两者都不是必要的;cut只需将joined.txt作为一个参数。

代码语言:javascript
复制
xargs -t -a <( cat joined.txt | cut ... ) ... | bash

或

代码语言:javascript
复制
xargs -t -a <( cut -f1 joined.txt | ... ) ... | bash

但是,跳过整个进程替换并将该管道的输出输送到xargs将是最清晰的。

代码语言:javascript
复制
cut -f joined.txt | sort -u | grep -E '\S' | xargs -t ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27585790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档