Board logo

标题: [文本处理] 批处理怎样删除纯数字5位和5位以上的行? [打印本页]

作者: w1983912    时间: 2010-10-27 03:55     标题: 批处理怎样删除纯数字5位和5位以上的行?

TXT内容:
游戏 ab
655441111
123
1 9
56321
1 a
1234
游戏 1
123365411555454
5 go走
vv 10000

得到新TXT 内容
游戏 ab
123
1 9
1 a
1234
游戏 1
5 go走
vv 10000

只删除纯数字 有空的纯数字 只要有5位的 都删除  比如:1 10000      或99 6555555 05    这2个词

有劳各位  先谢谢了
作者: hfg1977    时间: 2010-10-27 06:23

xxx.txt内容:
  1. 游戏 ab
  2. 655441111
  3. 123
  4. 1 9
  5. 56321
  6. 1 a
  7. 1234
  8. 游戏 1
  9. 123365411555454
  10. 5 go走
  11. vv 10000
  12. 1 10000
  13. 99 6555555 05   
复制代码
  1. grep -v "^[0-9]* \?[0-9 ]*[0-9]\{5,\}[0-9 ]*$" xxx.txt
复制代码

作者: yangfengoo    时间: 2010-10-27 08:20

  1. @echo off
  2. for /f "delims=" %%a in ('findstr /v [0-9][0-9][0-9][0-9][0-9] a.txt') do echo %%a
  3. pause
复制代码

作者: hfg1977    时间: 2010-10-27 11:25

findstr 不能实现该目的,
如 :
99 游戏 6555555
作者: w1983912    时间: 2010-10-27 13:23     标题: 谢谢

确实 啊  2楼的朋友  代码没反应  我有grep.exe 文件 保存你的代码为bat  无反映   
3楼的确实如4楼说的
继续请教
作者: hfg1977    时间: 2010-10-27 18:07

G:\DOS>grep --ver
grep (GNU grep) 2.5.1
我这里运行好好的呀,怎么会没反应??
作者: hfg1977    时间: 2010-10-27 18:09

检查版本和path.

20202020
作者: w1983912    时间: 2010-10-27 19:10     标题: 回复 7楼 的帖子

我目前只有grep.exe 文件  但是看不到版本啊   我把这文件放在bat同一个文件夹里    能帮我把你测试的代码和需要使用的程序打包后传到论坛么  谢谢
作者: Batcher    时间: 2010-10-27 19:17     标题: 回复 8楼 的帖子

不要双击运行
到命令行里面去
把@echo off删掉
在合适的地方加上pause
看看执行过程再好好想想
如果想不通
就把执行过程贴出来让别人帮你讲解
作者: w1983912    时间: 2010-10-27 21:46     标题: 回复 9楼 的帖子

.........................头都大了   实在无法     就凑合使用吧。。。。。。 谢谢
作者: lvsehuaxue    时间: 2011-6-11 21:34

  1. findstr /v "^[0-9][0-9][0-9]*[0-9][0-9][0-9]$" a.txt
复制代码

作者: Batcher    时间: 2011-6-11 22:38

  1. perl -lane "print if not $_ =~ /[0-9]{5,}/" a.txt
复制代码

作者: 我是马甲    时间: 2011-6-12 00:12

findstr /b /v "[0-9][0-9][0-9][0-9][0-9]*" a.txt
作者: lvsehuaxue    时间: 2011-6-12 08:38

本帖最后由 lvsehuaxue 于 2011-6-12 08:40 编辑

13# 我是马甲
楼上的不行,如果是纯4位数也被过滤。再如,123456aaaa也会被过滤。
作者: pcl_test    时间: 2015-4-1 15:57

本帖最后由 pcl_test 于 2015-4-1 16:01 编辑

回复 1# w1983912
  1. @@echo off & setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a in ('type "测试.txt"') do (
  3. set "str=%%a"
  4. set "str=!str: =!"
  5. set "word=!str!ж"
  6. for /l %%b in (0 1 9) do set "word=!word:%%b=!"
  7. if not "!word!" == "ж" (
  8. echo,%%a
  9. ) else if "!str:~4,1!" == "" echo,%%a
  10. ))>"结果.txt"
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2