标题: 请教怎样才可以做到精确搜索字串
[打印本页]
作者: terse
时间: 2007-11-5 02:14
标题: 请教怎样才可以做到精确搜索字串
用findstr搜索文本中的字符串不能精确处理,
如:我想搜索61.175.221.25 结果会搜到161.175.221.250
另是否有更快的搜索速度;我的IP地址文本有19M,太慢了!
请高手指教!
作者: junchen2
时间: 2007-11-5 03:12
findstr "\<61.175.221.25\>"
findstr "[^0-9]61.175.221.25[^0-9]"
findstr " 61.175.221.25 "
sed "/^61.175.221.25$/!d" file
sed "/[^0-9]61.175.221.25[^0-9].*/!d" file
这样吗
[
Last edited by junchen2 on 2007-11-5 at 03:17 AM ]
作者: terse
时间: 2007-11-5 11:45
谢楼上!还是不能解决!
我有一批处理是这样的:
for /f "tokens=1,2*" %%i in ('findstr "\<!ip!\>" ip.txt') do (
set cip=%%k
)
if "!cip!"=="" goto ip2
goto ok
:ip2
if "!ip4!"=="0" goto ip3
set /a ip4-=1
for /f "tokens=1,2*" %%i in ('findstr "\<!ip1!.!ip2!.!ip3!.!ip4!\>" ip.txt') do (
set cip=%%k
)
if "!cip!"=="" goto ip2
goto ok
:ip3
if "!ip3!"=="0" if "!cip!"=="" goto ip4
set /a ip3-=1
for /f "tokens=1,2*" %%i in ('findstr "\<!ip1!.!ip2!.!ip3!.\>" ip.txt') do (
set cip=%%k
)
if "!cip!"=="" goto ip3
goto ok
:ip4
if "!ip2!"=="0" goto ip5
set /a ip3-=1
for /f "tokens=1,2*" %%i in ('findstr "\<!ip1!.!ip2!.\>" ip.txt') do (
set cip=%%k
)
if "!cip!"=="" goto ip4
goto ok
:ip5
for /f "tokens=1,2*" %%i in ('findstr "\<!ip1!.\>" ip.txt') do (
set cip=%%k
)
ip.txt部分内容
61.175.220.167 61.175.220.175 浙江省台州市 电信
61.175.220.176 61.175.220.179 浙江省台州市温岭市 农村合作银行
61.175.220.180 61.175.220.191 浙江省台州市 电信
61.175.220.192 61.175.220.195 浙江省台州市 人民检察院
61.175.220.196 61.175.220.231 浙江省台州市 电信
61.175.220.232 61.175.220.239 浙江省台州市 温岭泽国知晓网吧
61.175.220.240 61.175.220.251 浙江省台州市 电信
61.175.220.252 61.175.220.252 浙江省台州市温岭市 利分锋网吧
61.175.220.253 61.175.220.255 浙江省台州市 电信
61.175.221.0 61.175.221.3 浙江省台州市温岭市 滨海镇人民政府
61.175.221.4 61.175.221.13 浙江省台州市 电信
61.175.221.14 61.175.221.14 浙江省台州市温岭市太平镇 千千结网吧
61.175.221.15 61.175.221.15 浙江省台州市 电信
61.175.221.16 61.175.221.23 浙江省台州市温岭市 松门镇人民政府
61.175.221.24 61.175.221.35 浙江省台州市 电信
61.175.221.36 61.175.221.39 浙江省台州市温岭市 质量技术监督局
61.175.221.40 61.175.221.43 浙江省台州市 电信
61.175.221.44 61.175.221.47 浙江省台州市 钱江集团公司
61.175.221.48 61.175.221.55 浙江省台州市 电信
61.175.221.56 61.175.221.63 浙江省台州市 人本超市
61.175.221.91 61.175.221.103 浙江省台州市 电信
61.175.221.104 61.175.221.107 浙江省台州市温岭市 汇其乐网吧
61.175.221.108 61.175.221.119 浙江省台州市 电信
61.175.221.120 61.175.221.123 浙江省台州市温岭市 新河中学
61.175.221.224 61.175.221.231 浙江省台州市 电信
61.175.221.232 61.175.221.239 浙江省台州市温岭市 水利局
61.175.221.240 61.175.221.241 浙江省台州市 电信
61.175.221.242 61.175.221.242 浙江省台州市温岭市 新河红太阳网吧
61.175.221.243 61.175.221.249 浙江省台州市 电信
61.175.221.250 61.175.221.250 浙江省台州市温岭市 太平东升网吧
217.58.170.0 217.59.255.255 意大利
217.60.0.0 217.61.255.255 丹麦
217.62.0.0 217.63.255.255 荷兰
217.64.0.0 217.64.7.31 芬兰
217.64.7.32 217.64.7.63 丹麦
217.64.7.64 217.64.15.255 芬兰AAA
217.64.16.0 217.64.31.255 阿塞拜疆
217.64.32.0 217.64.47.255 英国
217.64.48.0 217.64.63.255 法国
217.64.64.0 217.64.79.255 德国
217.64.80.0 217.64.95.255 欧洲
217.64.96.0 217.64.111.255 马里
217.64.112.0 217.64.143.255 英国
217.64.144.0 217.64.159.255 土耳其AAA
217.64.160.0 217.64.175.255 德国
217.64.176.0 217.64.191.255 芬兰
217.64.192.0 217.64.207.255 意大利
217.64.208.0 217.64.223.255 土耳其
217.64.224.0 217.64.239.255 英国
217.64.240.0 217.64.255.255 比利时
217.65.0.0 217.65.15.255 西班牙
217.65.16.0 217.65.25.255 欧洲
217.65.26.0 217.65.26.255 德国
217.65.27.0 217.65.31.255 欧洲
217.65.32.0 217.65.47.255 荷兰
217.65.48.0 217.65.63.255 欧洲
217.65.64.0 217.65.79.255 意大利
217.65.80.0 217.65.95.255 欧洲
217.65.96.0 217.65.111.255 匈牙利
217.65.112.0 217.65.127.255 欧洲
217.65.128.0 217.65.143.255 德国
12.153.52.0 12.153.55.255 美国 哥伦比亚联合学院
12.153.56.0 12.154.115.255 美国 ATT用户
1161.175.221.250 161.175.221.255 浙江 台州 温岭 网吧1 测试
2217.65.96.0 1217.65.111.255 匈牙利 测试
217.64.71.64 217.64.151.255 芬兰 测试
比如上面搜索"217.61.15.15" 正确的应该显示
芬兰AAA
但最后是显示
土耳其AAA
也就是搜了这行
217.64.144.0 217.64.159.255 土耳其AAA
作者: abcd
时间: 2007-11-5 12:54
根本就没有217.61.15.15这个IP嘛
作者: abcd
时间: 2007-11-5 12:58
@echo off
set /p ip=请输入需要查找的IP:
set ip=%ip:.=\.%
findstr /r "\<%ip%\>" ip.txt
pause>nul
作者: terse
时间: 2007-11-5 13:01
Quote: |
Originally posted by abcd at 2007-11-5 12:54:
根本就没有217.61.15.15这个IP嘛 |
|
是的 如果没有217.61.15.15 上面的处理就会搜索217.61.15.14
作者: abcd
时间: 2007-11-5 13:04
5楼的不会出现那样情况的
前面的为什么不行,是因为.在正则表达式中代表匹配所有(除\n)
需要转义为\.
作者: terse
时间: 2007-11-5 14:22
Quote: |
Originally posted by abcd at 2007-11-5 12:58:
@echo off
set /p ip=请输入需要查找的IP:
set ip=%ip:.=\.%
findstr /r "\<%ip%\>" ip.txt
pause>nul |
|
OK 谢了哦!