bash - 如何将最后一个管道的输出发送到两个不同的命令?
问题描述
所以,我有一个带有一堆数字的文本文件,每行一个数字是具体的,所以我这样做: -
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
推荐阅读
- ios - 如何获取 MKMarkerAnnotationView 图像?
- c++ - 如何使用 ROS tf 侦听器获取转换并将其应用于我的速度数据?
- php - 特殊字符敏感sql查询
- python - 线程中的 PIL.ImageGrab 、 grab() 和 load() 函数
- javascript - AWS Lambda 处理程序中是否需要回调?
- forms - 是的,一起验证数组中的字段
- sql-server - 使用 SQL server 2017,如何将浮点数(IEEE754 单精度 32 位)转换为二进制?
- swiftui - SwiftUI 中带有嵌套视图的上下文菜单
- javascript - Javascript按类删除动态创建的iframe元素?
- firebase - 如何在 Flutter 中禁用 Firebase 为 Web 自动生成 UUID