【发布时间】:2021-01-27 21:55:50
【问题描述】:
所以,我有一堆数字的文本文件,每行一个数字是具体的,所以我这样做:-
cat filename.txt|sort -n|head -1 获得最高号码,我可以通过cat filename.txt|sort -n|tail -1 获得最低号码。
只是为了确定有没有一种方法可以将cat filename.txt|sort -n| 及其输出发送到一行中的两个不同命令并具有输出(最高数字和最低数字彼此相邻)
【问题讨论】:
所以,我有一堆数字的文本文件,每行一个数字是具体的,所以我这样做:-
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
【讨论】:
paste - - 传递它。
有一个有用的命令tee语法tee second.txt会输出到second.txt
您可以将其与 bash 执行管道结合使用,例如 tee >(wc),
所以你可以通过 tee >(wc) | head 执行 2 个或更多命令
【讨论】: