Linux同时输出到管道和标准输出
想使用Shell脚本对某文本文件中无序的一列数字排序并输出求和结果,文本如下所示:
4
2
1
3
50
一开始使用的命令只能输出求和结果,不能同时给出排序结果:
sort -nr t3.txt | awk '{sum+=$1} END {print "sum="sum}'
该命令输出sum=60,无排序结果。原因是sort命令的输出仅仅通过管道传递给了awk命令,而没有输出到标准输出。这里需要同时向管道和标准输出进行输出操作。
首先想到了tee命令,该命令可以从标准输入读入数据,并输出到标准输出和文件。
这里还需要借用标准错误输出来输出排序后的结果,代码如下:
sort -nr t3.txt | tee /dev/stderr | awk '{sum+=$1} END {print "sum="sum}'
这是一个简单的示意图。
这样就实现了题目的需求。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤