Bash 无法将重定向替换为冗余cat cat joined.txt | xargs-t-a

Bash 无法将重定向替换为冗余cat cat joined.txt | xargs-t-a,bash,cut,io-redirection,xargs,Bash,Cut,Io Redirection,Xargs,在这两种情况下,应该从joined.txt读取的是进程替换(而不是xargs)中的cut命令,因此为了完全安全,应该将管道或输入重定向放在进程替换中。事实上,两者都没有必要cut可以将joined.txt作为参数 < 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
读取的是进程替换(而不是
xargs
)中的
cut
命令,因此为了完全安全,应该将管道或输入重定向放在进程替换中。事实上,两者都没有必要
cut
可以将
joined.txt
作为参数

< 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

我在问题中提出解决方案的方式有一段历史。我试图将join.txt的内容提供给grep commmand。这将使我能够将xargs粘贴到生成joined.txt(400MB文件)的管道的末端。就我所知,grep之前的mkdir阻止了这一点,你看到了一种方法吗?那是行不通的
grep
大概想要加入.txt的完整内容,但在生成文件时,您只能将部分内容提供给每个
grep
< 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
xargs -t -a <( cat joined.txt | cut ... ) ... | bash
xargs -t -a <( cut -f1 joined.txt | ... ) ... | bash
cut -f joined.txt | sort -u | grep -E '\S' | xargs -t ...