Linux下如何高亮Use%列超80%的行并保留完整输出?
实现磁盘使用率超过80%行高亮的方法
这个需求完全可以实现,下面是两种简单的终端高亮方案:
方法一:使用awk(推荐)
通过awk解析df -h的输出,对使用率超过80%的行添加红色高亮,同时保留完整输出:
df -h | awk ' BEGIN { red = "\033[31m"; reset = "\033[0m" } NR == 1 { print $0; next } { pct = $5 sub(/%/, "", pct) if (pct > 80) printf "%s%s%s\n", red, $0, reset else print $0 } '
说明:
\033[31m是ANSI红色转义码,\033[0m用于重置颜色回默认值- 首行(表头)直接原样输出,不做处理
- 对其他行提取第5列(Use%),去掉百分号后转为数值判断,超过80则用红色包裹整行
方法二:结合grep和sed
如果更习惯用grep工具,可通过反向匹配配合sed添加颜色:
df -h | sed -e '/^Filesystem/!s/\(.* [0-9]\{2,3\}% .*\)/\x1b[31m\1\x1b[0m/' | grep -E '^Filesystem|([0-9]{2,3}% .*)'
不过该方法精准度略逊于awk,它会匹配所有两位数及以上的百分比,而非严格判断是否超过80。
注意事项:
- 以上方案仅在支持ANSI转义码的终端中有效(大部分现代Linux终端均支持)
- 若需将输出保存到文件,颜色转义码会被写入文件,此时可去掉颜色部分或使用其他工具处理
内容的提问来源于stack exchange,提问作者kokila balakrishnan
相关产品推荐
相关产品推荐

