标题: [已结]如何从一文本中用两个关键字进行搜索
[打印本页]
作者: provem
时间: 2009-2-13 10:31
标题: [已结]如何从一文本中用两个关键字进行搜索
文本内容(chatlog.db):
李五对王三说:我们明天大起大落地
李五对所有人说:大家好
王三对所有人说:那个谁来了
王三对李五说:昨天到哪去了
想得到地结果是:
李五对王三说:我们明天大起大落地
李五对所有人说:大家好
王三对所有人说:那个谁来了
下面是自己写的代码,不过当李五对所有人说,就会提取两次(重复了)
下面代码输出结果是
李五对王三说:我们明天大起大落地
李五对所有人说:大家好
李五对所有人说:大家好
王三对所有人说:那个谁来了
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
版主说的是像这样吗?好像还是不对
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
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
)
)
现在只有 王三对所有人说:那个谁来了
没有提出来
Last edited by provem on 2009-2-13 at 12:22 ]
作者: provem
时间: 2009-2-13 12:45
问题解决了,以下代码可以达到我想要的效果,谢谢各位
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
)
)