[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 能否用findstr根据关键词提取连续几行内容?

请问各位大侠,用findstr可以方便的根据关键词提取某一行内容。但是我想根据关键词,提取联系的几行内容,可以实现吗?
要求是这样的,需要从很多保存在本地的html中(1.html,2.html...)提取"Members of the public"及其后面的两行。
*********************
...
<tr>
<th>Type</th>
<th class='num'>Count</th>
<th class='num percent'>As %</th>
</tr>
<tr>
<td>Members of the public</td>
<td class='num'>2</td>
<td class='num'>100%</td>
</tr>
</table>
...

******************

可以实现吗?谢谢!

findstr命令本身没有这样的参数
grep是可以的
  1. grep -A 2 "Members of the public" 1.html
复制代码
http://bbs.bathome.net/s/tool/index.html?key=grep
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

可以用findstr找到关键字的行号,再找行号+1,+2,+3。

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set fn=html_tmp.txt
  4. cd.>%fn%
  5. for %%a in (*.html) do (
  6.   for /f "tokens=1,2 delims=:" %%b in ('findstr /n "Members of the public" "%%~a"') do (
  7.     set /a num=%%b
  8.     echo;________%%~nxa___>>%fn%
  9.     echo;%%c>>%fn%
  10.   )
  11.   set /a num2=num+1
  12.   for /f "tokens=1,2 delims=:" %%d in ('findstr /b /n .* "%%~a"^|findstr /b !num2!') do echo;%%e>>%fn%
  13.   set /a num3=num2+1
  14.   for /f "tokens=1,2 delims=:" %%f in ('findstr /b /n .* "%%~a"^|findstr /b !num3!') do echo;%%g>>%fn%
  15. )
  16. echo;over&pause>nul&exit /b
复制代码
获取包括关键字的连续3行,只是效率极低,极!低!

TOP

可以用xmlstartlet xmlint 这些东西。需要学下xml xpath
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

返回列表