LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 820|回复: 6

怎么提取文件中的IP地址呢?

[复制链接]
发表于 2004-5-19 12:27:29 | 显示全部楼层 |阅读模式
:thank
发表于 2004-5-19 12:34:48 | 显示全部楼层
本版这样的例子很多~,望善用搜索~,或者请贴出文件片段~
发表于 2004-5-19 22:04:00 | 显示全部楼层

我自己写了个sed,你可以试试.

有几个IP,就会提取几个IP,即使是相同的IP.

________________________________________________________________________________________

#!/bin/sed -n

# --------------------
# mark all numbers
s/[0-9]\{1,\}/_&/g
# remove unreasonable
s/_0[0-9]//g
s/_[3-9][0-9][0-9]//g
s/_2[6-9][0-9]//g
s/_25[6-9]//g
# remove mark
s/_//g
# --------------------

# extract
:a
/[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}/ {
  h
  s/[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}//
  x
  G
  s/\(.*\)\([0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}\)\(.*\)\n\1\3/\2/p
  g
  ta
}
________________________________________________________________________________________

把这段代码拷贝下来,假设存到文件IP.sed,命令行上执行:

~$ sed -n -f IP.sed your.text.file

你要是能保证IP地址都是合理的,你就把"# --------------------"之间的那段去掉, 只要
"# extract"那部分就可以了,那是用来检查无效IP地址的.
发表于 2004-5-19 22:37:51 | 显示全部楼层

对不起,忘告诉你了.为了检查无效IP,我先在每个数前面加了个"_",当做m

当然你要是觉得不用检查,那就直接执行"# extract"那部分就可以了,就向我上面说的一
样.

sorry
 楼主| 发表于 2004-5-19 22:47:42 | 显示全部楼层
非常感谢~~
发表于 2004-5-19 23:30:23 | 显示全部楼层

回复: 对不起,忘告诉你了.为了检查无效IP,我先在每个数前面加了个"_&quot

最初由 retypedef 发表
当然你要是觉得不用检查,那就直接执行"# extract"那部分就可以了,就向我上面说的一
样.

sorry

very good~~,建议兄弟整理一下,贴到[脚本欣赏]里,
发表于 2004-5-19 23:36:36 | 显示全部楼层

赫赫,那谢谢先!

^_^
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表