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

非标准日志格式下提取转换IP地址的正则表达式需求

提取并转换IP格式的方法

用 sed 命令快速处理

直接通过正则匹配替换,一步完成提取和格式转换:

echo '{"path":"/var/log/auth.log","message":"Jul 24 08:03:34 ip-192-168-13-129 sshd[32258]: Disconnected from user ubuntu 192.168.13.199 port 49540"}' | sed -E 's/.*ip-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+).*/\1.\2.\3.\4/'

原理:正则捕获ip-后的四段数字,再用点号拼接成标准IP格式。

用 awk 命令处理

如果习惯用awk,可通过分隔符拆分内容:

echo '{"path":"/var/log/auth.log","message":"Jul 24 08:03:34 ip-192-168-13-129 sshd[32258]: Disconnected from user ubuntu 192.168.13.199 port 49540"}' | awk -F'ip-|sshd' '{split($2,a,"-"); print a[1]"."a[2]"."a[3]"."a[4]}'

原理:先以ip-和sshd为分隔符截取目标段,再用-拆分四段数字,最后拼接成标准IP。

Python 脚本批量处理

如果需要处理大量日志,用脚本更灵活:

import re

log_line = '{"path":"/var/log/auth.log","message":"Jul 24 08:03:34 ip-192-168-13-129 sshd[32258]: Disconnected from user ubuntu 192.168.13.199 port 49540"}'
ip_match = re.search(r'ip-(\d+)-(\d+)-(\d+)-(\d+)', log_line)
if ip_match:
    standard_ip = f"{ip_match.group(1)}.{ip_match.group(2)}.{ip_match.group(3)}.{ip_match.group(4)}"
    print(standard_ip)

原理:用正则精准匹配ip-开头的IP段,通过分组提取数字后拼接成标准格式。

内容的提问来源于stack exchange,提问作者Jimmy D

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 06:23:27