想使用Shell脚本对某文本文件中无序的一列数字排序并输出求和结果,文本如下所示:
4
2
1
3
50
开头的命令只能输出求和结果,不能同时输出排序结果:
[En]
The command used at the beginning can only output the sum result, not the sort result at the same time:
sort -nr t3.txt | awk '{sum+=$1} END {print "sum="sum}'
该命令输出sum=60,无排序结果。原因是sort命令的输出仅仅通过管道传递给了awk命令,而没有输出到标准输出。这里需要同时向管道和标准输出进行输出操作。
首先想到了tee命令,该命令可以从标准输入读入数据,并输出到标准输出和文件。
在这里,您还需要借用标准错误输出来输出排序结果。代码如下:
[En]
Here, you also need to borrow the standard error output to output the sorted result. The code is as follows:
sort -nr t3.txt | tee /dev/stderr | awk '{sum+=$1} END {print "sum="sum}'
这是一个简单的示意图。
通过这种方式,实现了课题的需求。
[En]
In this way, the needs of the topic are realized.
Original: https://www.cnblogs.com/a-tester/p/15995608.html
Author: ATester
Title: Linux同时输出到管道和标准输出
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/523996/
转载文章受原作者版权保护。转载请注明原作者出处!