从复杂日志中收集 IP

从复杂日志中收集 IP

我对使用一些更高级的 grep、awk、sed 有疑问。我有一个日志文件,用于专有 MTA,其中包含字符串中的 IP,以 分隔[redacted]^~x.x.x.x^[redacted]。到目前为止,我所有的 grep、awking 和 sed 都没有取得多大进展。

此日志文件有 331520 行。我的目标是简单地 grep 出 ip,然后使用 sed 执行 for 循环,以 sed 's/$i/redacted'。我附上了一个日志条目的示例。如果你们有任何想法,我将不胜感激。

Jun  4 15:21:52 host.name mta-name: 13388^~88/CC-04671-FCA0DCF4^~D^~<redactedmessageid>^~@^[email protected]^~redacted.hostname^~000.00.000.000^~port^~esmtp^~^~external_routing_nobounce^~0^~0.51^~subjectofmessage^~250 2.6.0 <redactedmessageid> [InternalId=2178458] Queued mail for delivery    

答案1

您想用字符串“[redacted]”替换 IP 地址吗?无需在循环中执行grepthen 。为您提供循环并免费“grepping”。sedsed

sed 's/\^~[[:digit:]]\+\(\.[[:digit:]]\+\)\{3\}/^~[redacted]^~/' logfile

答案2

我搞明白了。更多手册页。对我的grep命令进行一点修改,使用-o显示地址列表,使用sort | uniq,我能够获得列表

grep -o '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*' log.file | sort -n | uniq

相关内容