You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下如何按条件统计多文件行数并汇总结果

在Linux中统计多文件中数值大于60的行数并汇总结果

解决方案命令

直接使用以下awk命令即可实现需求,同时保证格式与期望输出一致:

BEGIN {printf "%8s %6s\n", "file", "Count"}
FNR==1 {next}
$2+0>60 {count[FILENAME]++}
END {for (f in count) printf "%8s %6d\n", f, count[f]}

执行时将所有目标文件作为参数传入:

awk 'BEGIN {printf "%8s %6s\n", "file", "Count"} FNR==1 {next} $2+0>60 {count[FILENAME]++} END {for (f in count) printf "%8s %6d\n", f, count[f]}' sample1.txt sample2.txt sample3.txt

执行结果

file  Count
sample1      2
sample2      4
sample3      2

命令解释

  • BEGIN块:在处理任何文件前打印对齐的表头,用printf控制列宽保证格式统一。
  • FNR==1 {next}:跳过每个文件的第一行(表头行),FNR是当前文件的行号,每个文件开始时会重置为1,以此精准跳过表头。
  • $2+0>60 {count[FILENAME]++}:将第二列转换为数值类型(避免字符串比较的误差),若数值大于60,则对当前文件的计数加1,用数组count按文件名存储每个文件的统计结果。
  • END块:遍历计数数组,打印每个文件的名称和对应的符合条件行数,同样用printf保证格式对齐。

原命令问题分析

  1. 未跳过表头:原命令没有处理表头行,会把第一行的value(第二列)当作字符串与60比较,字符串比较逻辑与数值不同,导致错误统计表头。
  2. 不支持多文件汇总:原命令仅处理单个文件,没有用数组记录每个文件的独立计数,无法输出多文件的汇总结果。

内容的提问来源于stack exchange,提问作者Alegría

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 17:55:12