标题: [文本处理] 【已解决】批处理如何提取文本中指定标签/标记符囊括起来的内容? [打印本页]
作者: wbkl 时间: 2016-5-11 20:52 标题: 【已解决】批处理如何提取文本中指定标签/标记符囊括起来的内容?
本帖最后由 wbkl 于 2016-5-26 21:05 编辑
批处理如何提取文本文件中指定字符段中间的内容:<xzbhm>要提取的内容</xzbhm>
文本文件是一个日志,记录的内容非常多,这只是其中的一小部分
2016-05-11 00:06:06 com=1
2016-05-11 00:06:06 命令:be
<business ="FPM" comment="fedpp"><body count="1" ><groupxh="2"><dataname="1_dm" value="b08"/></ness>
<GoodsE><HSB11></HSB11><SPBM></SPBM><QYSPBM></QYSPBM><SYYHZCBZ></SYYHZCBZ><YHZC></YHZC><LSLBZ></LSLBZ></GoodsMx><BillNo>513828</BillNo><xzbhm>512960001</xzbhm><StatuM>T00001</StatusDM>
2016-05-11 01:45:11 命令:1
2016-05-11 01:45:11 命令:2
2016-05-11 01:45:11 补2命令
2016-05-11 01:45:12 增加命令
2016-05-11 01:45:12 id=2
2016-05-11 01:45:12 命令2
2016-05-11 01:45:12 命令:2
2016-05-11 01:45:12 执行:2b
<GoodsE><HSB11></HSB11><SPBM></SPBM><QYSPBM></QYSPBM><SYYHZCBZ></SYYHZCBZ><YHZC></YHZC><LSLBZ></LSLBZ></GoodsMx><BillNo>513828</BillNo><xzbhm>779610002</xzbhm><StatuM>T00001</StatusDM>
作者: gawk 时间: 2016-5-11 21:04
请把原始文件压缩之后传上来,否则 别人写的代码你可能没法用。
作者: wbkl 时间: 2016-5-11 21:47
本帖最后由 wbkl 于 2016-5-11 21:49 编辑
回复 2# gawk
这个内容我简化了,其实一段有很多行,不过内容基本也都是这种样子的,每段中间还有很多其他的内容随机出现
作者: pcl_test 时间: 2016-5-11 23:14
第三方- grep -oP "(?<=<xzbhm>)[^>]+(?=<\/xzbhm>)" "1.txt">"2.txt"
复制代码
作者: wbkl 时间: 2016-5-11 23:35
回复 4# pcl_test
呵呵,我想了好久估计也就第三方能整出来了,批处理看来是没希望了
作者: pcl_test 时间: 2016-5-12 00:19
回复 5# wbkl
嗯,第三方方便,就你给出的样文而言,纯批也没难度
作者: gawk 时间: 2016-5-12 13:28
- @echo off
- setlocal enabledelayedexpansion
- (for /f "delims=" %%i in ('type "1.txt" ^| findstr "<xzbhm>"') do (
- set "str=%%i"
- set "str=!str:*xzbhm>=!"
- for /f "delims=<" %%j in ("!str!") do (
- echo,%%j
- )
- ))>2.txt
复制代码
作者: wbkl 时间: 2016-5-26 21:04
回复 7# gawk
你肯定是测试过我发的文本了,但其实原日志比这个复杂的多,还是没能提取出来;出于保密我不能完整把它贴出来,我后来还是用了其他方法。。。回复晚了,谢谢!
作者: gawk 时间: 2016-5-27 13:02
回复 8# wbkl
嗯,再次印证了2楼的话:否则 别人写的代码你可能没法用
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |