中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教怎样才可以做到精确搜索字串
作者:
标题: 请教怎样才可以做到精确搜索字串 上一主题 | 下一主题
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『楼 主』:  请教怎样才可以做到精确搜索字串 使用 LLM 解释/回答一下

用findstr搜索文本中的字符串不能精确处理,
如:我想搜索61.175.221.25 结果会搜到161.175.221.250
另是否有更快的搜索速度;我的IP地址文本有19M,太慢了!
请高手指教!


2007-11-5 02:14
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
junchen2
高级用户





积分 537
发帖 219
注册 2007-8-4
来自 杭州--半山
状态 离线
『第 2 楼』:   使用 LLM 解释/回答一下

findstr "\<61.175.221.25\>"

findstr "61.175.221.25"

findstr " 61.175.221.25 "

sed "/^61.175.221.25$/!d" file


sed "/61.175.221.25.*/!d" file
这样吗

Last edited by junchen2 on 2007-11-5 at 03:17 AM ]


2007-11-5 03:12
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 3 楼』:   使用 LLM 解释/回答一下

谢楼上!还是不能解决!
我有一批处理是这样的:
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


2007-11-5 11:45
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 4 楼』:   使用 LLM 解释/回答一下

根本就没有217.61.15.15这个IP嘛


2007-11-5 12:54
查看资料  发短消息  网志  OICQ (470237592)  编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 5 楼』:   使用 LLM 解释/回答一下

@echo off
set /p ip=请输入需要查找的IP:
set ip=%ip:.=\.%
findstr /r "\<%ip%\>" ip.txt
pause>nul


2007-11-5 12:58
查看资料  发短消息  网志  OICQ (470237592)  编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 6 楼』:   使用 LLM 解释/回答一下

Originally posted by abcd at 2007-11-5 12:54:
根本就没有217.61.15.15这个IP嘛

是的 如果没有217.61.15.15 上面的处理就会搜索217.61.15.14


2007-11-5 13:01
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 7 楼』:   使用 LLM 解释/回答一下

5楼的不会出现那样情况的

前面的为什么不行,是因为.在正则表达式中代表匹配所有(除\n)

需要转义为\.


2007-11-5 13:04
查看资料  发短消息  网志  OICQ (470237592)  编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 8 楼』:   使用 LLM 解释/回答一下

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


2007-11-5 14:22
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: