我刚刚开始学习 Linux,对管道的理解有些问题。我想知道为什么 reversed.txt 是空的?我想先保存未排序的文件,然后传递给反向排序,然后保存到 reversed.txt。我的代码行:
cat file1.txt file2.txt | tee > unsorted.txt | xargs sort -r | xargs cat > reversed.txt
答案1
您的命令存在许多问题。
管道将标准输出连接到标准输入。由于您将标准输出重定向
tee
到文件,因此管道其余部分的输入没有任何内容。它应该是cat file1.txt file2.txt | tee unsorted.txt | ...
xargs
将标准输入转换为参数给定命令的。sort
和cat
命令期望它们的参数是文件名。因此,您要求它在名为原始文件中的每一行的文件上运行sort
(然后cat
),而不是在行本身上运行。cat file1.txt file2.txt | tee unsorted.txt | sort -r | cat > reversed.txt
然而最后cat
是多余的,所以你所需要的只是
cat file1.txt file2.txt | tee unsorted.txt | sort -r > reversed.txt