中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: 查找带有空格的字符串 上一主题 | 下一主题
ka56
中级用户





积分 234
发帖 129
注册 2006-11-28
状态 离线
『楼 主』:  查找带有空格的字符串

findstr "%abc%" "test.txt">"查到的号.txt"

我要查找的变量%abc%是这样的类型:
" 7777"
"7777 "
即数字前面或后面有个空格.要求查找时满足条件要求,严格匹配,举个例:
查找" 7777"

*正确的搜索结果为:
7777183
7777254

*不正确的结果是(上面代码搜出来就是这样):

7777183
7777254
3577776
4777724
......
(7777前面必须带有一个空格的指令没被接受,只含7777在中间的也出来了)

大虾帮改正下,感谢!!

2008-10-4 13:35
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 2 楼』:  



  Quote:
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/F:file]
        [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
        strings [[drive:][path]filename[ ...]]

  /B        在一行的开始配对模式。

加上 /B 参数,就只匹配开头为 7777 的行。

2008-10-4 14:40
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ka56
中级用户





积分 234
发帖 129
注册 2006-11-28
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by tireless at 2008-10-4 14:40:

加上 /B 参数,就只匹配开头为 7777 的行。

测试好象不能通过..
假如还要找在后面甚至在中间的,有个通用的法子吗?

[ Last edited by ka56 on 2008-10-4 at 14:50 ]

2008-10-4 14:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bel87
新手上路





积分 2
发帖 1
注册 2008-10-4
状态 离线
『第 4 楼』:  [原创]WOW05

final fantasy xi gil
buy final fantasy xi gil
cheap final fantasy xi gil
buy ffxi gil
ffxi gil
cheap ffxi gil
wow gold
cheap wow gold
buy wow gold
world of warcraft gold
cheap world of warcraft gold
buy world of warcraft gold
buy warhammer gold
warhammer gold
cheap warhammer gold
buy warhammer online gold
warhammer online gold
cheap warhammer online gold
buy eq plat
buy everquest platinum
buy age of conan gold
age of conan gold
aoc gold
wow power leveling
Anyone of you bought/sold any wow gold from www.belrion.com ? I was told they deliver and are good and fast, appreciate if

anyone here can give me some feedback ^^

2008-10-4 15:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by ka56 at 2008-10-4 01:35 PM:
*正确的搜索结果为:
7777183
7777254

上看下看左看右看,还是没有看到“正确的搜索结果”中什么地方有空格,被论坛过滤掉了?
不知道是不是这个意思:
findstr /c:" 7777" a.txt




2008-10-4 15:28
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ka56
中级用户





积分 234
发帖 129
注册 2006-11-28
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by HAT at 2008-10-4 15:28:

上看下看左看右看,还是没有看到“正确的搜索结果”中什么地方有空格,被论坛过滤掉了?
不知道是不是这个意思:
findstr /c:" 7777" a.txt

被过滤了,变量是随机,所以有点麻烦~~

2008-10-4 15:49
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ka56
中级用户





积分 234
发帖 129
注册 2006-11-28
状态 离线
『第 7 楼』:  

最大的特点是,字符串的前面或后面有一个空格.

2008-10-4 16:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 8 楼』:  

开头:
for %%a in (" 7777" "^7777") do findstr /r /c:%%a test.txt>>查到的号.txt
结尾:
for %%a in ("7777 " "7777$") do findstr /r /c:%%a test.txt>>查到的号.txt
中间...(办法比较笨)
for /f "tokens=*" %%a in ('findstr /v /r /c:"7777 " test.txt^|findstr /v /r /c:"7777$"^|findstr /v /r /c:" 7777"^|findstr /v /r /c:"^7777"') do echo %%a>>查到的号.txt
[ Last edited by tireless on 2008-10-4 at 17:28 ]

2008-10-4 16:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 9 楼』:  


@echo off
for /f "delims=" %%a in (test.txt) do (
      for /f "tokens=*" %%i in ("%%a") do (
           if "%%a" neq "%%i" echo %%a
))
pause




心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-10-4 16:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ka56
中级用户





积分 234
发帖 129
注册 2006-11-28
状态 离线
『第 10 楼』:  



  Quote:
Originally posted by tireless at 2008-10-4 16:20:
开头:
for %%a in (" 7777" "^7777") do findstr /r /c:%%a test.txt>>查到的号.txt
结尾:
[code]for %%a in ("7777 " "7777$") do fi ...

结尾的可以找出来,开头的不行,,

2008-10-4 17:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 11 楼』:  



  Quote:
Originally posted by ka56 at 2008-10-4 05:17 PM:


结尾的可以找出来,开头的不行,,

我测试没有问题。
@echo off
echo 开头:
for %%a in (" 7777" "^7777") do findstr /r /c:%%a test.txt
echo.
echo 结尾:&pause
for %%a in ("7777 " "7777$") do findstr /r /c:%%a test.txt
echo.
echo 中间:&pause
for /f %%a in ('findstr /v /r /c:"7777 " test.txt^|findstr /v /r /c:"7777$"^|findstr /v /r /c:" 7777"^|findstr /v /r /c:"^7777"') do echo %%a
pause


2008-10-4 17:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zqz0012005
中级用户




积分 297
发帖 135
注册 2006-10-21
状态 离线
『第 12 楼』:  

只能怪findstr的正则太肉了,遇到空格就傻眼。
那就查找2次吧
for /f "delims=" %%a in ('findstr /i /c:" 7777" a.txt ^& findstr /i /c:"7777 " a.txt') do echo %%a




hh.exe ntcmds.chm::/ntcmds.htm
2008-10-4 17:49
查看资料  发短消息 网志  OICQ (411976538)  编辑帖子  回复  引用回复
ceii
初级用户





积分 115
发帖 45
注册 2007-3-3
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by zqz0012005 at 2008-10-4 05:49 PM:
只能怪findstr的正则太肉了,遇到空格就傻眼。
那就查找2次吧
[code]for /f "delims=" %%a in ('findstr /i /c:" 7777" a.txt ^& findstr /i /c:"7777 & ...

对!还是linux工具好,sed和grep都正常:
sed -n "/^ 7777/p" test.txt
grep "^ 7777" test.txt

不过以下语句好象也可以。
findstr /rc:"^ 7777" test.txt

2008-10-4 17:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zqz0012005
中级用户




积分 297
发帖 135
注册 2006-10-21
状态 离线
『第 14 楼』:  Re 13楼



  Quote:
我要查找的变量%abc%是这样的类型:
" 7777"
"7777 "
即数字前面或后面有个空格.要求查找时满足条件要求,严格匹配

你这个只能查找开头是空格接着是7777的字符串,没理解楼主的要求



hh.exe ntcmds.chm::/ntcmds.htm
2008-10-4 18:10
查看资料  发短消息 网志  OICQ (411976538)  编辑帖子  回复  引用回复
ka56
中级用户





积分 234
发帖 129
注册 2006-11-28
状态 离线
『第 15 楼』:  



  Quote:
Originally posted by zqz0012005 at 2008-10-4 18:10:


你这个只能查找开头是空格接着是7777的字符串,没理解楼主的要求

开头是空格接着是7777的字符串
这个我是用一个变量,试了几个虾虾的代码都找不出来,邪门了....

@echo off
@echo WScript.StdOut.Write(new ActiveXObject('htmlfile').parentWindow.clipboardData.getData('text'))> tmp.js 2>nul
@for /f "delims=" %%a in ('cscript //Nologo tmp.js') do @set ClipboardText=%%a >nul 2>nul
@del tmp.js /f /q >nul 2>nul
@echo %ClipboardText%
findstr "%ClipboardText%" "用来查找的文档.txt">"查到的号.txt"
type 查到的号.txt| clip


这是我原来的代码.

用来查找的文档.txt的格式:(每行的开头结尾都有个空格)

77773050
77775081
15686081
29682122
30290010
31481070
37887777
37890100
37897777
45089031
45980031  
---------------------------------------------------

思路:我只要先复制"7777",运行批处理,就能把" 7777"开头和"7777 "结尾的四个号都搜出来了...

根据tireless兄的代码,我整理如下:
@echo off
@echo WScript.StdOut.Write(new ActiveXObject('htmlfile').parentWindow.clipboardData.getData('text'))> tmp.js 2>nul
@for /f "delims=" %%a in ('cscript //Nologo tmp.js') do @set ClipboardText=%%a >nul 2>nul
@del tmp.js /f /q >nul 2>nul
@echo %ClipboardText%
for %%g in (" %ClipboardText%" "^ %ClipboardText%") do findstr /rc:%%g 用来查找的文档.txt>"查到的号.txt"
for %%b in ("%ClipboardText%$") do findstr /r /c:%%b 用来查找的文档.txt>>"查到的号.txt"
type 查到的号.txt| clip

但只能找出结尾的出来:

37887777
37897777

哪位大虾再帮我指教下....

[ Last edited by ka56 on 2008-10-4 at 18:29 ]

2008-10-4 18:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: