Awk实现求和、平均、最大值和最小值的计算操作

0、准备和数据文件

比如有一个数据文件,只有一列(在之前可以通过各种手段过滤出只有数字这一列),比如操作的响应时间

490898
1189235
20212
1494270
146515
29369
23563
563027
22976
127809
16813
551646
18858
18977

 

1、求和

cat data|awk '{sum+=$1} END {print "Sum = ", sum}' 

 

2、求平均
cat data|awk '{sum+=$1} END {print "Average = ", sum/NR}' 

 

3、求最大值
cat data|awk 'BEGIN {max = 0} {if ($1>max) max=$1 fi} END {print "Max=", max}'

 

4、求最小值(min的初始值设置一个超大数即可)
awk 'BEGIN {min = 1999999} {if ($1<min) min=$1 fi} END {print "Min=", min}'

 

5、求访问次数的Top 10 Resource,可以根据此进行优化

cat output/logs/cookie_logs/`date +%u`/cookie_log|grep -v '172.16'|grep -v '127.0.0.1' |awk -F' '  '{ if(index($1,"219.141.246")!=0) print $2; else print $1  } '|sort|uniq -c|sort -n |tail -n 10

要在 txt 文档中查找数值的最大值最小值,首先需要明确文档内的内容是否为纯数字或包含其他文本信息。以下是几种常见情况下的解决方法。 --- ### 方法一:Python 脚本读取文件并计算最值 假设您的 TXT 文件仅包含一系列以换行符分隔的数字(例如每行一个数),您可以编写简单的 Python 程序来找到最大值最小值。 #### 示例代码: ```python filename = 'data.txt' with open(filename, 'r', encoding='utf-8') as file: numbers = [float(line.strip()) for line in file if line.strip().replace('.', '', 1).isdigit()] if numbers: # 如果列表非空 max_value = max(numbers) min_value = min(numbers) print(f"最大值: {max_value}") print(f"最小值: {min_value}") else: print("未发现有效数字数据.") ``` **解释**: - 使用了列表解析式从每一行提取有效的浮点数; - 函数 `strip()` 移除首尾空白字符包括换行符等干扰项; - 判断是否只含数字部分通过替换一次小数点后检查合法性保证正负实数均涵盖。 --- ### 方法二:Excel 中导入TXT手动统计 若您不具备编程基础,则可尝试将 TXT 导入 Microsoft Excel 表格软件里进行直观操作。 步骤如下: 1. 打开一个新的 Excel 工作簿; 2. 选择菜单栏中的“数据”,点击右侧“获取外部数据”—>"自文本"; 3. 按照向导提示设置适当的字段分割规则直到看到完整预览窗口为止(大多数时候默认即可); 4. 完成加载过程以后就可以运用内置函数求得最高最低分数啦!比如针对A列所有元素分别应用公式`=MAX(A:A)` 和`=MIN(A:A)`; --- ### 方法三:命令行工具 (适用于Linux/MacOS用户) 对于熟悉 Shell 的人来说,也可以借助 awk 这样的强大文本处理器达成目标: ```bash awk '{for(i=1;i<=NF;i++) if($i+0==$i){print $i}}' data.txt | sort -n | head -n1 # 最小值 awk '{for(i=1;i<=NF;i++) if($i+0==$i){print $i}}' data.txt | sort -nr| head -n1 # 最大值 ``` 这里我们先过滤掉非数字条目然后再排序选取两端极限位置上的记录作为答案。 --- ### 注意事项 无论采取哪种手段都需要注意原始数据质量的好坏与否直接影响最终所得结论的真实性与可靠性。务必提前审视清楚实际状况再做决定!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值