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

[文本处理] 批处理如何在文本中提取有一定规律的数字?

文本文件A.TXT中有字符、数字、汉字,我想提取特定的数字,这些数字都是500开头,且是连续的18位,如何将这些数字提取出来存入B.TXT呢。
在B.TXT中数字存放的格式如下
500123456789012345
500111111111111111
......

谢谢各位高手了,我是批处理的白痴,我以前在《电脑爱好者》上有看到一篇文章介绍过,但多方查找也没有找到,却找到了这个高手云集的地方,所以向各位求助了,在此先感谢各位高手了,要不一个一个的找实在是顶不住啊!如果有什么表述不清楚的,我再补充。

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

TOP

回复 2# CrLf


    老师,不行啊,不能把提取出的字符存到b.txt啊,我是WIN7旗舰版,不知道与系统有关吗?

TOP

本帖最后由 FOR 于 2012-9-6 22:53 编辑

文本规律的描述还应该更详细点
比如:每行中是不是只有这18个数字,还是会出现一行中除了18个数字外还有被其它汉字等字符隔开的数字
再比如,除了这18个数字是500开头,是否还有其它500字样?
比如:abc你好500哦的500123456789012345哈哈哈
2楼代码无法满足你是因为他处理的是每行以500开头的数据,而我理解你的500并不一定在行的开头。

TOP

回复 4# FOR

感谢楼上的老师:
每行中还有其他数字,但是其他数字都不超过3位,且都不以500开头(只有我需要的数字是以500开头)。我需要的这段数字在文本中的位置不固定,并不在每行的开头,甚至文本的分段分行也是没有规律的。

TOP

回复 5# 在前进路上


    能否把A.TXT压缩之后上传到顶楼?

TOP

本帖最后由 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
复制代码

TOP

将该批处理放在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
复制代码

TOP

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

TOP

返回列表