从文本文件中提取信息

从文本文件中提取信息

我需要在一个文本文件中执行以下场景。

我有一个由我的服务器生成的大型文本文件,其中包含以下信息。

a)大量 ASCII 垃圾数据,其中包含一些连接到服务器的计算机的 IP 地址。

b)IP 地址没有完整地写出来,而是像这样 sfafaffs@192@sdsfa@168@dfs8989090sdffsff0.09sf@90@90dsaaQW@1@. 也就是说 ip 被包含在 @tags 中

我的目标是制作一个文本文件,它将打印 IP 和相应的计数器变量,显示特定 IP 的出现情况。

如何解决这个问题。请指导我不要发布解决方案,因为这会限制我的能力。例如,如果下次我遇到与此相关的其他问题,我该怎么办?所以请告诉我应该采取什么策略来解决这些类型的问题?

答案1

在本次练习中grep,、sedawk将成为你的朋友。

以下是第一个问题的提示:从垃圾行解析 IP

如果每个 IP 都在自己的行上,并且被垃圾包围,并且数字两侧都有 @ 符号,则此方法有效。

“测试”只是一个文件,我将你的例子粘贴进去

grep -nPo '@\d{1,3}@' test | sed 's/@//g'

grep:-n 在前面添加行号,P 允许您使用 Perl 正则表达式,o 仅返回匹配的部分。

正则表达式匹配任意一组由 @ 符号包围的长度为 1-3 的数字

Sed:用空字符替换掉 @ 符号

您的输出将是:

1:192
1:168
1:90
1:1

其中 1 是行号。我把它留在那里是因为你可以用它awk来查找具有匹配行号的部分并将它们连接起来以形成 IP 地址。

相关内容