Board logo

标题: [文本处理] 【已解决】批处理如何提取文本中指定标签/标记符囊括起来的内容? [打印本页]

作者: 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

第三方
  1. 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

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "delims=" %%i in ('type "1.txt" ^| findstr "<xzbhm>"') do (
  4.     set "str=%%i"
  5.     set "str=!str:*xzbhm>=!"
  6.     for /f "delims=<" %%j in ("!str!") do (
  7.         echo,%%j
  8.     )
  9. ))>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