标题: [文本处理] 批处理怎么提取文本中第2列内容符合指定特征的行 [打印本页]
作者: 649918043 时间: 2015-7-29 16:55 标题: 批处理怎么提取文本中第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
因该怎么写???求教,,因该怎么写批处理,,提取出来以上的需求
作者: pcl_test 时间: 2015-7-29 17:01
本版规则
1、求助时,务必在顶楼一次性把问题交代清楚,建议给出完整有针对性的样本,样本过大可发网盘分享链接。勿发无意义的标题
2、使用 code 标记把代码部分括起来(单击回复框的 <> 按钮,复制粘贴代码进去),以便复制。问题解决后,请编辑顶楼帖子在标题前面注明[已解决]
作者: pcl_test 时间: 2015-7-29 17:33
分开提取还是一起提取,你倒是要说清楚
作者: 649918043 时间: 2015-7-29 17:53
回复 3# pcl_test
分别提取啊,,大哥赐教
作者: pcl_test 时间: 2015-7-29 18:25
本帖最后由 pcl_test 于 2015-7-29 18:57 编辑
- ::grep下载http://batch-cn.qiniudn.com/tool/2.5.1/grep.exe
- ::提取大写字母和数字
- grep -oP ".*\s+[^\s]*(\d[^\s]*[A-Z][^\s]*|[A-Z][^\s]*\d[^\s]*)$" "样本.txt"
- ::提取数字
- findstr "\<[0-9][0-9]*$" "样本.txt"
- ::提取字母
- findstr /i "\<[a-z][a-z]*$" "样本.txt"
复制代码
作者: 649918043 时间: 2015-7-29 18:40
回复 5# pcl_test
大哥,,,我被提取的文本名字,填写在哪里啊,,提取后的文本填写在哪里???样本.txt 是被提取的 还是提取后的啊
作者: 649918043 时间: 2015-7-29 18:42
已经完成,,感谢 知道了
作者: WHY 时间: 2015-7-29 21:21
5楼正则用得不错,高手
作者: WHY 时间: 2015-7-29 21:22
- @echo off
- for /f "tokens=1-2" %%i in (a.txt) do (
- for /f "tokens=2 delims=ABCDEFGHIJKLMNOPQRSTUVWXYZ" %%a in ("@%%j@") do (
- for /f "tokens=2 delims=0123456789" %%b in ("@%%j@") do echo %%i %%j
- )
- )
- pause
复制代码
作者: WHY 时间: 2015-7-29 22:08
vbs 有点长- Function getTextStr(ByVal strSrcFile, strPattern, strDstFile)
- Dim fso, objFile, strText, objReg, objMatch, str
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set objFile = fso.OpenTextFile(strSrcFile, 1)
- strText = objFile.ReadAll
- objFile.Close
- str = ""
- Set objReg = New RegExp
- objReg.MultiLine = True
- objReg.Global = True
- objReg.Pattern = strPattern
- For Each objMatch In objReg.Execute(strText)
- str = str + objMatch.Value + vbCrLf
- Next
- Set objFile = fso.OpenTextFile(strDstFile, 2, True)
- objFile.Write str
- objFile.Close
- Set objFile = Nothing
- Set fso = Nothing
- End Function
-
- Dim strSrcFile
- strSrcFile = "a.txt"
- getTextStr strSrcFile, "^\S+\s+\w*?([A-Z]\w*?\d\w*|\d\w*?[A-Z]\w*)$", "1.txt"
- getTextStr strSrcFile, "^\S+\s+\d+$", "2.txt"
- getTextStr strSrcFile, "^\S+\s+[a-zA-Z]+$", "3.txt"
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |