|
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
状态 离线
|
|
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 |
|
|
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 |
|
|
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 |
|