gpt4 book ai didi

linux - 在子目录中查找最大值和最小值(使用 shell 脚本不到 10 秒)

转载 作者:太空宇宙 更新时间:2023-11-04 04:08:11 24 4
gpt4 key购买 nike

我有几个这种类型的文件:

Sensor   Location              Temp       Threshold
------ -------- ---- ---------
#1 PROCESSOR_ZONE 23C/73F 62C/143F
#2 CPU#1 30C/86F 73C/163F
#3 I/O_ZONE 32C/89F 68C/154F
#4 CPU#2 22C/71F 73C/163F
#5 POWER_SUPPLY_BAY 17C/62F 55C/131F

几个子目录下大约有124630我尝试确定 PROCESSOR_ZONE 的最高和最低温度这是我目前的脚本:

#!/bin/bash

max_value=0
min_value=50

find $1 -name hp-temps.txt -exec grep "PROCESSOR_ZONE" {} + | sed -e 's/\ \+/,/g' | cut -d, -f3 | cut -dC -f1 | while read current_value ;
do
echo $current_value;
done

我的脚本后的输出:

30
28
26
23
...

我的脚本尚未完成,它设置了 10 分钟来显示所有温度。我认为要到达那里,我必须将命令的结果放入文件中,对其进行整理并返回第一行(最大值)和最后一行(最小值)。但我不知道怎么做。

最佳答案

而不是这个位:

... | while read current_value ;
do
echo $current_value;
done

只需将剪切后的输出定向到文件:

... > temperatures.txt

如果需要对它们进行排序,请先对它们进行排序:

... | sort -n > temperatures.txt

那么文件的第一行将是返回的最低温度,最后一行将是最高温度。

性能建议:

find 命令在每个文件上运行一个新的 grep 进程。如果您的目录中有数十万个这样的文件,它将运行 grep 数十万次。您可以通过告诉 find 对每批几千个文件运行一次 grep 命令来加快速度:

find $1 -name hp-temps.txt -print | xargs grep -h "PROCESSOR_ZONE" | sed ...

find 命令在标准输出上打印文件名; xargs 命令读取这些内容并立即对一批文件运行 grep 。 grep 的 -h 选项表示“不在输出中包含文件名”。

如果有数千个文件需要处理,以这种方式运行应该会大大加快搜索速度。

关于linux - 在子目录中查找最大值和最小值(使用 shell 脚本不到 10 秒),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20301544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com