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

[文本处理] 批处理如何删除文本中以指定字符分割成两列的第二列内容为纯数字/纯字母的行

本帖最后由 pcl_test 于 2017-1-14 02:21 编辑

批处理如何批量删除纯数字所在的行数?
  1. jhfgudeli|wodima123
  2. jhfgudeli|jhfgudeli
  3. jhfgudeli|7204381
  4. jest1314527|1314527
  5. jeffnomms|fanzhe128
  6. jaychen3326|wfd901215
  7. jaychen3326|123456
  8. jasonlouhao|jasonlouhao
  9. jasonlouhao|asd138
  10. jasonlee123|jasonlee123
  11. jasonlee123|19880918
  12. jasonlee123|123123
  13. jaskjay|63619063qw
复制代码
目前数据是这样,想把“|”右侧数据是纯数字的内容都删除,留下字母+数字的内容,“|”前面的内容不管

结果是:
  1. jhfgudeli|wodima123
  2. jhfgudeli|jhfgudeli
  3. jeffnomms|fanzhe128
  4. jaychen3326|wfd901215
  5. jasonlouhao|jasonlouhao
  6. jasonlouhao|asd138
  7. jasonlee123|jasonlee123
  8. jasonlee123|19880918
  9. jaskjay|63619063qw
复制代码
================================经过一楼的回复,已经实现了想要的效果。确实非常棒

请教,如何删除纯数字和纯字母呢,因为我只想要字母+数字的内容

回复 34# Rasm


    使用gawk,简单高效,删除纯数字和纯字母,只保留字母+数字的行。
  1. @echo off
  2. gawk -F"|" "BEGIN{IGNORECASE=1}$2~/[0-9][A-Z]|[a-z][0-9]/" 文本.txt>输出.txt
  3. pause
复制代码
使用纯P,代码稍微多点,删除纯数字和纯字母,只保留字母+数字的行。
  1. @echo off
  2. (for /f "tokens=1,2* delims=|" %%a in (文本.txt) do (
  3.     for /f "tokens=1,2* delims=0123456789" %%c in ("#%%b") do (
  4.         if not "%%c%%d"=="#" (
  5.             for /f "tokens=1,2* delims=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" %%A in ("#%%b") do (
  6.                 if not "%%A%%B"=="#" echo,%%a^|%%b
  7.             )
  8.         )
  9.     )
  10. ))>输出.txt
  11. pause
复制代码

TOP

回复 2# flyinnet9


    123adfa

这种也是字母+数字的被过滤了,该怎么加进去

TOP

回复 35# Rasm


    已经集齐了

TOP

回复 34# 老刘1号


    送你个敬业福

TOP

回复 33# Rasm


    不知道有红包奖励没(我只想吃个雪糕)

TOP

回复 20# 老刘1号


    这个代码是对了,140Kb的文本,处理了2分钟

TOP

回复 31# 老刘1号


    对啊,合并了,哈哈,问题雷同

TOP

我说嘛我原来是1楼被挤到20楼了……

TOP

回复 20# 老刘1号


    如果一个文本中,只想删选出右侧:123dfsajo,数字开头,但是里面有字母+数字的,该怎么修改

TOP

回复 26# zz100001


    你怎么知道我是女的, 加分是随机的haha, 给老刘1号也补上了
1

评分人数

TOP

回复 7# 老刘1号

最后结尾处的没有排除是因为没有换行或是有空白字符,所以findstr没有匹配到
  1. powershell "gc '文本.txt'|?{$_ -notmatch '\|\d+\s*$'}"&pause
复制代码
1

评分人数

TOP

哎哟,版主一出手就有美女加分,隔壁老刘就没这待遇啊

TOP

回复 4# CrLf


    [attach]10397[/attach]

TOP

回复 2# 老刘1号


    ……题目看错,我处理了一通左侧的……

TOP

返回列表