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

[文本处理] 批处理怎么提取文本中第2列内容符合指定特征的行

本帖最后由 pcl_test 于 2016-8-13 21:00 编辑

文本格式    如下:     TAB分列
[email]linkailin@idc.com[/email]        Lklylh00
[email]gdchenbin5@idc.com[/email]        840516cb
[email]wangdong0827@idc.com[/email]        45852216
[email]tiayulong@idc.com[/email]        124548277
[email]et2400@idc.com[/email]        Luxibing
[email]cesx4@idc.com[/email]        321456987
[email]200019zph@idc.com[/email]        2616831024
[email]cxl909@idc.com[/email]        Windowsme
[email]dadaxing@idc.com[/email]        Panfeng999
[email]njhuos@idc.com[/email]        Mnbvcxz1
[email]zangli@idc.com[/email]        Zl506a90
[email]st-lxy@idc.com[/email]        197254999
[email]kofv70@idc.com[/email]        62877068
[email]zw105zw@idc.com[/email]        Ay105105
[email]llq5404@idc.com[/email]        33546131
[email]hnsysdldh@idc.com[/email]        19811021
[email]aiolos2005@idc.com[/email]        19881214
[email]chenjing855160@idc.com[/email]        19343007
[email]klingsoul@idc.com[/email]        Eckingsoul
[email]24h@idc.com[/email]        Marioas110
[email]longxiaoge@idc.com[/email]        Songsong
[email]df_feeling@idc.com[/email]        Df825138
[email]helongxiang@idc.com[/email]        9887421810
[email]zhyqrqm@idc.com[/email]        Rqm1234
[email]liqikkkk@idc.com[/email]        293000
[email]ff0125@idc.com[/email]        12525
[email]wangxin5433@idc.com[/email]        543388
[email]ohgg@idc.com[/email]        Gg790304
[email]wap001@idc.com[/email]        870203
[email]lingxue00@idc.com[/email]        800318052
[email]cc8691215@idc.com[/email]        8691215
[email]jsjjcaizhong@idc.com[/email]        680830
[email]hotzgx@idc.com[/email]        198212123
[email]huangbangmian@idc.com[/email]        802825829
[email]wisely2001@idc.com[/email]        1234567
[email]ixinye@idc.com[/email]        Fighter
[email]sj1005@idc.com[/email]        5201005
[email]huanghaoyi2000@idc.com[/email]        72694528
[email]wangyan658@idc.com[/email]        Hujiaying520
[email]jeffdong0303@idc.com[/email]        226600
[email]xusheng223@idc.com[/email]        10185
[email]xieyuansong2005@idc.com[/email]        7757677
[email]huliping@idc.com[/email]        Hlp5001


目前需要:提取出来以下格式
1
提取第2列带有大写字并有数字的行,整行提取出来
[email]linkailin@idc.com[/email]        Lklylh00
[email]dadaxing@idc.com[/email]        Panfeng999
[email]zangli@idc.com[/email]        Zl506a90

2
提取第2列全部是数字的,整行提取出来
[email]cesx4@icd.com[/email]        321456987
[email]200019zph@idc.com[/email]        2616831024
[email]st-lxy@idc.com[/email]        197254999
3
提取第2列全部是英文字母,整行提取出来
[email]klingsoul@idc.com[/email]        Eckingsoul
[email]longxiaoge@idc.com[/email]        Songsong

因该怎么写???求教,,因该怎么写批处理,,提取出来以上的需求

本版规则
1、求助时,务必在顶楼一次性把问题交代清楚,建议给出完整有针对性的样本,样本过大可发网盘分享链接。勿发无意义的标题
2、使用 code 标记把代码部分括起来(单击回复框的 <> 按钮,复制粘贴代码进去),以便复制。问题解决后,请编辑顶楼帖子在标题前面注明[已解决]

TOP

分开提取还是一起提取,你倒是要说清楚

TOP

回复 3# pcl_test

分别提取啊,,大哥赐教

TOP

本帖最后由 pcl_test 于 2015-7-29 18:57 编辑
  1. ::grep下载http://batch-cn.qiniudn.com/tool/2.5.1/grep.exe
  2. ::提取大写字母和数字
  3. grep -oP ".*\s+[^\s]*(\d[^\s]*[A-Z][^\s]*|[A-Z][^\s]*\d[^\s]*)$" "样本.txt"
  4. ::提取数字
  5. findstr "\<[0-9][0-9]*$" "样本.txt"
  6. ::提取字母
  7. findstr /i "\<[a-z][a-z]*$" "样本.txt"
复制代码
1

评分人数

    • 649918043: 感谢给帖子标题标注[已解决]字样技术 + 1

TOP

回复 5# pcl_test


    大哥,,,我被提取的文本名字,填写在哪里啊,,提取后的文本填写在哪里???样本.txt    是被提取的  还是提取后的啊

TOP

已经完成,,感谢  知道了

TOP

5楼正则用得不错,高手

TOP

  1. @echo off
  2. for /f "tokens=1-2" %%i in (a.txt) do (
  3.     for /f "tokens=2 delims=ABCDEFGHIJKLMNOPQRSTUVWXYZ" %%a in ("@%%j@") do (
  4.         for /f "tokens=2 delims=0123456789" %%b in ("@%%j@") do echo %%i %%j
  5.     )
  6. )
  7. pause
复制代码

TOP

vbs 有点长
  1. Function getTextStr(ByVal strSrcFile, strPattern, strDstFile)
  2.     Dim fso, objFile, strText, objReg, objMatch, str
  3.     Set fso = CreateObject("Scripting.FileSystemObject")
  4.     Set objFile = fso.OpenTextFile(strSrcFile, 1)
  5.     strText = objFile.ReadAll
  6.     objFile.Close
  7.     str = ""
  8.     Set objReg = New RegExp
  9.     objReg.MultiLine = True
  10.     objReg.Global = True
  11.     objReg.Pattern = strPattern
  12.     For Each objMatch In objReg.Execute(strText)
  13.         str = str + objMatch.Value + vbCrLf
  14.     Next
  15.     Set objFile = fso.OpenTextFile(strDstFile, 2, True)
  16.     objFile.Write str
  17.     objFile.Close
  18.     Set objFile = Nothing
  19.     Set fso = Nothing
  20. End Function
  21. Dim strSrcFile
  22. strSrcFile = "a.txt"
  23. getTextStr strSrcFile, "^\S+\s+\w*?([A-Z]\w*?\d\w*|\d\w*?[A-Z]\w*)$", "1.txt"
  24. getTextStr strSrcFile, "^\S+\s+\d+$", "2.txt"
  25. getTextStr strSrcFile, "^\S+\s+[a-zA-Z]+$", "3.txt"
复制代码

TOP

返回列表