Board logo

标题: 请教怎样才可以做到精确搜索字串 [打印本页]

作者: 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  谢了哦!