awk分析磁盘分区空间使用率的核心是提取df输出中use%列的数值并做条件判断:跳过表头、删除%符号、转为数字比较,支持按阈值筛选、挂载点匹配及彩色高亮输出。

用 awk 分析磁盘分区空间使用比例,核心是结合 df 输出和 awk 的字段提取、条件判断能力,把“Use%”列中数值化的百分比抽出来做筛选或计算。
提取所有分区的使用率数值(去掉%符号)
最基础的操作是把每行末尾的 Use% 字段转成纯数字,方便后续比较:
-
df -h | awk 'NR>1 {sub(/%/,"",$5); print $5}'—— 跳过表头,删掉第5列末尾的%,输出纯数字 -
df -P | awk 'NR>1 && $1 ~ /^\/dev\// {gsub(/%/,"",$5); print $1, $5}'—— 加过滤只看物理设备分区,同时打印设备名和数字使用率
筛选使用率超过指定阈值的分区
比如找 >80% 的分区,关键在于让 awk 正确识别并比较数字值:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
-
df -P | awk 'NR>1 && $5+0 > 80 {print $1, $5}'——$5+0强制把字符串转为数字,避免字符比较出错 -
df -h | awk -F'[[:space:]%]+' 'NR>1 && $(NF-1) > 80 {print $1, $(NF-1) "%"}'—— 用空格和 % 共同作分隔符,倒数第二列就是数字部分
按挂载点精确匹配并获取其使用率
当你要查特定路径(如 /opt 或 /var)的使用率时,用正则精准定位最后一列:
-
df -h | awk '$NF == "/opt" {gsub(/%/,"",$5); print $5}'—— 精确匹配挂载点等于/opt的行,输出其数字使用率 -
df -P | awk '$6 ~ /^\/var$/ {print $5}'——$6是 POSIX 格式下的挂载点列,用~支持模式匹配(如/^\/var\/.*/可匹配子目录)
带颜色或格式化输出提升可读性
实际运维中常需一眼识别风险,可用简单逻辑加标记:
df -P | awk 'NR>1 {rate=$5+0; printf "%-20s %s%s\n", $1, rate, (rate>85?" \033[1;31m(警报)\033[0m":"")}')- 注意:终端需支持 ANSI 颜色,
\033[1;31m是红色高亮,\033[0m重置样式










