如何将最后一个管道的输出发送到两个不同的命令?



所以,我有一个文本文件,其中有一堆数字,每行一个数字,所以我做:-用cat filename.txt|sort -n|head -1得到上面的数,用cat filename.txt|sort -n|tail -1得到下面的数。只是为了确定是否有一种方法可以将cat filename.txt|sort -n|及其输出发送到一行中的两个不同命令,并输出(最高数字和最低数字相邻)

您可以使用tee和进程替换做一些有趣的事情,但是输出的顺序可能不稳定(由于进程的时序)

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将输出到second.txt

您可以将其与bash执行管道结合使用,例如tee >(wc)

你可以通过tee >(wc) | head

执行2个或更多的命令

最新更新