|
发表于 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地址的. |
|