标题: [文本处理] 批处理如何在文本中提取有一定规律的数字? [打印本页]
作者: 在前进路上 时间: 2012-9-6 18:34 标题: 批处理如何在文本中提取有一定规律的数字?
文本文件A.TXT中有字符、数字、汉字,我想提取特定的数字,这些数字都是500开头,且是连续的18位,如何将这些数字提取出来存入B.TXT呢。
在B.TXT中数字存放的格式如下
500123456789012345
500111111111111111
......
谢谢各位高手了,我是批处理的白痴,我以前在《电脑爱好者》上有看到一篇文章介绍过,但多方查找也没有找到,却找到了这个高手云集的地方,所以向各位求助了,在此先感谢各位高手了,要不一个一个的找实在是顶不住啊!如果有什么表述不清楚的,我再补充。
作者: CrLf 时间: 2012-9-6 19:13
findstr "^500[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]" a.txt>b.txt
作者: 在前进路上 时间: 2012-9-6 21:31
回复 2# CrLf
老师,不行啊,不能把提取出的字符存到b.txt啊,我是WIN7旗舰版,不知道与系统有关吗?
作者: FOR 时间: 2012-9-6 22:52
本帖最后由 FOR 于 2012-9-6 22:53 编辑
文本规律的描述还应该更详细点
比如:每行中是不是只有这18个数字,还是会出现一行中除了18个数字外还有被其它汉字等字符隔开的数字
再比如,除了这18个数字是500开头,是否还有其它500字样?
比如:abc你好500哦的500123456789012345哈哈哈
2楼代码无法满足你是因为他处理的是每行以500开头的数据,而我理解你的500并不一定在行的开头。
作者: 在前进路上 时间: 2012-9-7 16:28
回复 4# FOR
感谢楼上的老师:
每行中还有其他数字,但是其他数字都不超过3位,且都不以500开头(只有我需要的数字是以500开头)。我需要的这段数字在文本中的位置不固定,并不在每行的开头,甚至文本的分段分行也是没有规律的。
作者: forfiles 时间: 2012-9-7 16:40
回复 5# 在前进路上
能否把A.TXT压缩之后上传到顶楼?
作者: FOR 时间: 2012-9-7 17:41
本帖最后由 FOR 于 2012-9-7 17:57 编辑
- @echo off
- (for /f "delims=" %%i in (a.txt) do (
- set "str=%%i"
- setlocal enabledelayedexpansion
- set "str=!str: =!"
- set "str=!str:500= !"
- set "str=!str:* =!"
- set "str=!str: =500!"
- set "str=500!str:~0,15!"
- echo;!str!
- endlocal
- ))>b.txt
- pause
复制代码
作者: Hello123World 时间: 2012-9-17 17:16
将该批处理放在a.txt所在的目录。- sed '/500[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/ w b.txt' a.txt
- start b.txt
复制代码
作者: Seder 时间: 2012-9-17 17:55
- sed -n "/500[0-9]\{15\}/p" b.txt
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |