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

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

本帖最后由 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>
2

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2
    • pcl_test: 未按版规发帖PB -6

请把原始文件压缩之后传上来,否则 别人写的代码你可能没法用。
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

本帖最后由 wbkl 于 2016-5-11 21:49 编辑

回复 2# gawk


    这个内容我简化了,其实一段有很多行,不过内容基本也都是这种样子的,每段中间还有很多其他的内容随机出现

TOP

第三方
  1. grep -oP "(?<=<xzbhm>)[^>]+(?=<\/xzbhm>)" "1.txt">"2.txt"
复制代码

TOP

回复 4# pcl_test


    呵呵,我想了好久估计也就第三方能整出来了,批处理看来是没希望了

TOP

回复 5# wbkl

嗯,第三方方便,就你给出的样文而言,纯批也没难度

TOP

  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
复制代码
1

评分人数

Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 7# gawk


你肯定是测试过我发的文本了,但其实原日志比这个复杂的多,还是没能提取出来;出于保密我不能完整把它贴出来,我后来还是用了其他方法。。。回复晚了,谢谢!

TOP

回复 8# wbkl


    嗯,再次印证了2楼的话:否则 别人写的代码你可能没法用
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

返回列表