繁体   English   中英

如何将最后一个 pipe 发送到两个不同的命令?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM