找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24985|回复: 9

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

[复制链接]
发表于 2015-7-29 16:55:57 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-8-13 21:00 编辑

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


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

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

因该怎么写???求教,,因该怎么写批处理,,提取出来以上的需求
发表于 2015-7-29 17:01:21 | 显示全部楼层
本版规则
1、求助时,务必在顶楼一次性把问题交代清楚,建议给出完整有针对性的样本,样本过大可发网盘分享链接。勿发无意义的标题
2、使用 code 标记把代码部分括起来(单击回复框的 <> 按钮,复制粘贴代码进去),以便复制。问题解决后,请编辑顶楼帖子在标题前面注明[已解决]
发表于 2015-7-29 17:33:48 | 显示全部楼层
分开提取还是一起提取,你倒是要说清楚
 楼主| 发表于 2015-7-29 17:53:46 | 显示全部楼层
回复 3# pcl_test

分别提取啊,,大哥赐教
发表于 2015-7-29 18:25:08 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
649918043 + 1 感谢给帖子标题标注[已解决]字样

查看全部评分

 楼主| 发表于 2015-7-29 18:40:52 | 显示全部楼层
回复 5# pcl_test


    大哥,,,我被提取的文本名字,填写在哪里啊,,提取后的文本填写在哪里???样本.txt    是被提取的  还是提取后的啊
 楼主| 发表于 2015-7-29 18:42:16 | 显示全部楼层
已经完成,,感谢  知道了
发表于 2015-7-29 21:21:08 | 显示全部楼层
5楼正则用得不错,高手
发表于 2015-7-29 21:22:04 | 显示全部楼层
  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
复制代码
发表于 2015-7-29 22:08:47 | 显示全部楼层
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"
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 06:43 , Processed in 0.034289 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表