标题: [文本处理] 【已解决】批处理如何提取网页中的关键字和代码? [打印本页]
作者: pan528 时间: 2013-5-28 11:38 标题: 【已解决】批处理如何提取网页中的关键字和代码?
- <a href="#1000000">第一篇 刑法</a><br><br>
- <a href="#1100000">一、总则</a><br>
- <a href="#1101000">(一)总类</a><br>
- <a href="#1101010">1、刑法与修正案</a><br>
- <a href="#1101020">2、与刑法相关法</a><br>
- <a href="#1101030">3、立法解释及相关</a><br>
- <a href="#1101040">4、罪名相关</a><br>
- <a href="#1101050">5、刑法溯及力</a><br>
- <a href="#1102000">(二)犯罪</a><br>
- <a href="#1102010">1、犯罪和刑事责任</a><br>
- <a href="#1102011">1)未成年人犯罪</a><br>
- <a href="#1102012">2)国家工作人员犯罪</a><br>
- <a href="#1102013">3)其他特殊主体犯罪</a><br>
- <a href="#1102014">4)其他</a><br>
- <a href="#1102020">2、犯罪的预备、未遂和中止</a><br>
- <a href="#1102030">3、共同犯罪</a><br>
- <a href="#1102040">4、单位犯罪</a><br>
复制代码
希望生成的文本:- 1000000_第一篇 刑法
- 1100000_一、总则
- 1101000_(一)总类
- 1101010_1、刑法与修正案
- 1101020_2、与刑法相关法
- 1101030_3、立法解释及相关
- 1101040_4、罪名相关
- 1101050_5、刑法溯及力
- 1102000_(二)犯罪
- 1102010_1、犯罪和刑事责任
- 1102011_1)未成年人犯罪
- 1102012_2)国家工作人员犯罪
- 1102013_3)其他特殊主体犯罪
- 1102014_4)其他
- 1102020_2、犯罪的预备、未遂和中止
- 1102030_3、共同犯罪
- 1102040_4、单位犯罪
复制代码
我的代码:- @echo off
- set file=%~snx1
- setlocal enabledelayedexpansion
- (for /f "delims=" %%i in (%file%) do (
- set t=%%i
- set t=!t:^<a href^=^"^#=!
- set t=!t: =!
- set t=!t:^"^>=_!
- set t=!t:^</a^>^<br^>=!
- set t=!t:^<br^>=!
- echo !t!
- ))>N%file%
- endlocal
复制代码
但运行后出错了!其情形如下:- "#=="#1000000_第一篇 刑法
- "#=="#1100000_一、总则
- "#=="#1101000_(一)总类
- "#=="#1101010_1、刑法与修正案
- "#=="#1101020_2、与刑法相关法
- "#=="#1101030_3、立法解释及相关
- "#=="#1101040_4、罪名相关
- "#=="#1101050_5、刑法溯及力
- "#=="#1102000_(二)犯罪
- "#=="#1102010_1、犯罪和刑事责任
- "#=="#1102011_1)未成年人犯罪
- "#=="#1102012_2)国家工作人员犯罪
- "#=="#1102013_3)其他特殊主体犯罪
- "#=="#1102014_4)其他
- "#=="#1102020_2、犯罪的预备、未遂和中止
- "#=="#1102030_3、共同犯罪
- "#=="#1102040_4、单位犯罪
复制代码
问题:
1、"#=这三种特殊符号如何用转义符号?
2、不用替换法,如何提取网页中的关键字和代码?
3、DOS如何定位查找的字符?
问题有点多,希望高手们能指点指点,谢谢!
作者: tmplinshi 时间: 2013-5-28 12:10
- sed -n -r "s/^\s*<a href=\x22#([^\x22]+)\x22>([^<]+)<.*$/\1_\2/p" a.txt
复制代码
作者: terse 时间: 2013-5-28 12:17
- for /f "tokens=2-3 delims=<=> " %%a in (%file%) do (
- for /f "tokens=* delims=#" %%i in ("%%~a_%%b") do @echo %%i
- )
复制代码
作者: pan528 时间: 2013-5-28 12:26
本帖最后由 pan528 于 2013-5-28 12:39 编辑
回复 3# terse
高手!学习了!没有想到delims不需转义。谢谢!
但,我没有看懂“delims=<=> ”,为什么最后放上一个全角的空格?
能否指教?
作者: terse 时间: 2013-5-28 12:49
回复 4# pan528
行首字符啊
作者: pan528 时间: 2013-5-30 14:42
遗憾啦,没有人回答另二个问题:
1、"#=这三种特殊符号如何用转义符号?
3、DOS如何定位查找的字符?
作者: pan528 时间: 2013-7-19 18:53
上述两个问题好久没有人回,只好另设题目探讨了。不过本题可以结了,再次谢谢回贴的热心高手!
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |