
标题: [已结]如何从一文本中用两个关键字进行搜索 [打印本页]
作者: provem 时间: 2009-2-13 10:31 标题: [已结]如何从一文本中用两个关键字进行搜索
文本内容(chatlog.db):
李五对王三说[02-12 18:30]:我们明天大起大落地
李五对所有人说[02-12 18:30]:大家好
王三对所有人说[02-12 18:31]:那个谁来了
王三对李五说[02-12 18:31]:昨天到哪去了
想得到地结果是:
李五对王三说[02-12 18:30]:我们明天大起大落地
李五对所有人说[02-12 18:30]:大家好
王三对所有人说[02-12 18:31]:那个谁来了
下面是自己写的代码,不过当李五对所有人说,就会提取两次(重复了)
下面代码输出结果是
李五对王三说[02-12 18:30]:我们明天大起大落地
李五对所有人说[02-12 18:30]:大家好
李五对所有人说[02-12 18:30]:大家好
王三对所有人说[02-12 18:31]:那个谁来了CODE: [Copy to clipboard]
for /f "delims=" %%a in (chatlog.db) do (
set str=%%a
echo !str:~0,23!|findstr "%李五%">nul
if !errorlevel! equ 0 (
>>%tmp%\chatlog.tmp echo.%%a
)
echo !str:~0,23!|findstr "所有人">nul
if !errorlevel! equ 0 (
>>%tmp%\chatlog.tmp echo.%%a
)
)
代码应该怎么改
[ Last edited by provem on 2009-2-13 at 12:46 ]
作者: HAT 时间: 2009-2-13 11:41
一行里面使用两个管道,第一个管道把“所有人过滤掉”,第二个管道再搜索“李五”。
作者: provem 时间: 2009-2-13 12:11
版主说的是像这样吗?好像还是不对CODE: [Copy to clipboard]
for /f "delims=" %%a in (chatlog.db) do (
set str=%%a
echo !str:~0,23!|findstr "所有人" |findstr "%李五%">nul
if !errorlevel! equ 0 (
>>%tmp%\chatlog.tmp echo.%%a
)
)
作者: yishanju 时间: 2009-2-13 12:19
看findtr 帮助
作者: provem 时间: 2009-2-13 12:19
CODE: [Copy to clipboard]
for /f "delims=" %%a in (chatlog.db) do (
set str=%%a
echo !str:~0,23!|findstr "所有人">nul|echo !str:~0,23!|findstr 李五">nul
if !errorlevel! equ 0 (
>>%tmp%\chatlog.tmp echo.%%a
)
)
现在只有 王三对所有人说[02-12 18:31]:那个谁来了
没有提出来
[ Last edited by provem on 2009-2-13 at 12:22 ]
作者: provem 时间: 2009-2-13 12:45
问题解决了,以下代码可以达到我想要的效果,谢谢各位CODE: [Copy to clipboard]
for /f "delims=" %%a in (chatlog.db) do (
set str=%%a
echo !str:~0,23!|findstr /i "李五 所有人">nul
if !errorlevel! equ 0 (
>>%tmp%\chatlog.tmp echo.%%a
)
)
| 欢迎光临 中国DOS联盟论坛 (http://cndos.fam.cx/forum/) |
Powered by Discuz! 2.5 |