如何解决如何将最后一个管道的输出发送到两个不同的命令?
所以,我有一堆数字的文本文件,每行一个数字是特定的,所以我这样做:-
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。