Board logo

标题: [文本处理] 批处理如何在文本中提取有一定规律的数字? [打印本页]

作者: 在前进路上    时间: 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 编辑
  1. @echo off
  2. (for /f "delims=" %%i in (a.txt) do (
  3.         set "str=%%i"
  4.         setlocal enabledelayedexpansion
  5.         set "str=!str: =!"
  6.         set "str=!str:500= !"
  7.         set "str=!str:* =!"
  8.         set "str=!str: =500!"
  9.         set "str=500!str:~0,15!"
  10.         echo;!str!
  11.         endlocal
  12. ))>b.txt
  13. pause
复制代码

作者: Hello123World    时间: 2012-9-17 17:16

将该批处理放在a.txt所在的目录。
  1. 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
  2. start b.txt
复制代码

作者: Seder    时间: 2012-9-17 17:55

  1. sed -n "/500[0-9]\{15\}/p" b.txt
复制代码





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