sed用于运维巡检日志格式化,核心是精准清洗、字段对齐、冗余剔除和结构美化;支持提取关键字段、脱敏敏感信息、删除干扰行、添加报告头尾与分隔标识。

用 sed 格式化运维巡检日志报告,核心不是让它“生成”内容,而是对已有日志或命令输出做**精准清洗、字段对齐、冗余剔除和结构美化**。它擅长把原始杂乱文本变成可读性强、适合人工查阅或下游解析的报告样式。
提取关键字段并统一列宽
巡检日志常含时间、主机名、服务状态、资源使用率等字段,但原始输出可能列不齐、空格不均。sed 可配合 awk 做预处理,再用 sed 对齐:
- 先用
awk '{print $1,$3,$5}' /tmp/health.log提取时间、主机、CPU 使用率三列 - 再用
sed 's/ \+/ /g;s/^ //;s/ $//'把多个空格压成单空格,并去掉首尾空格 - 若需固定宽度(如主机名列占20字符),可用
sed 's/^\([^ ]*\)/\1 /;s/^\([^ ]*\) \{20\}/\1/'补空格(更推荐用printf或column -t配合)
脱敏与标准化敏感信息
巡检报告中 IP、路径、密码等需隐藏或替换。sed 的 s/// 命令可批量处理:
- 隐藏内网 IP:
sed -r 's/192\.168\.[0-9]{1,3}\.[0-9]{1,3}/***.***.***.***/g' - 标准化路径前缀:
sed 's#/var/log/app/#[LOG_DIR]/#g' - 抹掉密码字段(假设格式为
password=xxx):sed 's/password=[^[:space:]]*/password=****/g'
删除干扰行、保留有效段落
巡检脚本输出常混杂调试信息、空行、分隔线。sed 可按模式过滤:
- 删空行:
sed '/^$/d' - 删注释行(以 # 开头):
sed '/^#/d' - 只保留含 “OK” 或 “FAIL” 的结果行:
sed -n '/OK\|FAIL/p' - 跳过前3行(如标题、版本说明):
sed '1,3d'
添加报告头尾与分隔标识
让输出具备报告感,可用 sed 插入固定内容:
- 开头加时间戳和标题:
sed -i '1i\# 运维巡检报告 —— $(date "+%Y-%m-%d %H:%M")'(注意:实际使用需用 shell 变量展开,建议在管道中用echo拼接) - 每段服务检查后加横线分隔:
sed '/^Service:/a\------------------------' - 结尾追加总结提示:
sed '$a\# 报告生成完毕,请核查关键项'


















