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

Shell脚本需求:筛选日志中磁盘使用率≥80%的行并保留服务器名称

解决方法

首先得明确你的日志格式,通常这类日志会包含服务器名称和磁盘使用率字段(比如来自df命令的输出,或监控系统生成的日志)。以下是通用的解决方案,适配大多数常见日志格式:

假设日志格式示例

比如你的input-log-file.log内容类似这样(服务器名为第一个字段,使用率为倒数第二个字段,带%符号):

web-server-01 /dev/sda1 50G 44G 6G 88% /
db-server-02 /dev/sdb1 100G 76G 24G 76% /var/lib/mysql
cache-server-03 /dev/sdc1 200G 165G 35G 83% /cache

核心awk命令

要筛选使用率≥80%的行并保留服务器名,直接打印整行即可(整行已包含服务器名),关键是正确提取使用率数值:

awk '{
    # 提取倒数第二个字段(使用率,如"88%"),去掉末尾的%符号转成数值
    usage = substr($(NF-1), 1, length($(NF-1)) - 1)
    if (usage >= 80) print $0
}' input-log-file.log > output-log-file.log

适配特殊格式的情况

如果你的日志里使用率字段带有空格(比如 92%),可以用gsub清理多余字符:

awk '{
    usage = $(NF-1)
    gsub(/[% ]/, "", usage)  # 去掉%和所有空格
    if (usage >= 80) print $0
}' input-log-file.log > output-log-file.log

如果服务器名不在第一个字段(比如是第3个字段),但你想单独突出显示服务器名,可调整打印内容:

awk '{
    usage = substr($(NF-1), 1, length($(NF-1)) - 1)
    if (usage >= 80) print "[" $3 "]", $0
}' input-log-file.log > output-log-file.log

验证结果

执行完命令后,查看output-log-file.log,里面会只保留使用率≥80%的行,且完整包含对应服务器名称。

内容的提问来源于stack exchange,提问作者Kirtee Chaudhary

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 13:22:15