![](/img/trans.png)
[英]bash: how do I concatenate the output of two commands so that I can pipe them to a third?
[英]How can I send the out of the last pipe to two different commands?
所以,我有一个带有一堆数字的文本文件,每行一个数字是具体的,所以我这样做:- cat filename.txt|sort -n|head -1
得到最高数字,我可以做cat filename.txt|sort -n|tail -1
得到底数。 只是为了确定有没有办法发送cat filename.txt|sort -n|
和它的 output 到一行中的两个不同的命令并有输出(最高数字和最低数字彼此相邻)
您可以使用tee
和进程替换来做有趣的事情,但是 output 的顺序可能不稳定(由于进程的时序)
sort -n filename.txt | tee >(tail -1 >/dev/tty) | head -1
在这种情况下,我将使用 sed 打印第一行和最后一行:
sort -n filename.txt | sed -n '1p; $p'
正如@chepner 建议的那样
... | sed -n '1p; $p' | paste - - # tab separated
或者
... | awk 'NR == 1 {first = $0} END {print first, $0}' # space separated
有一个有用的命令tee
语法tee second.txt
将 output 转为 second.txt
您可以将其与 bash 执行管道结合使用,例如tee >(wc)
,
因此,您可以通过tee >(wc) | head
执行 2 个或更多命令。 tee >(wc) | head
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.