Board logo

标题: [文本处理] [己解决]批处理去掉文本中的多余内容 [打印本页]

作者: BAT1    时间: 2009-4-13 03:41     标题: [己解决]批处理去掉文本中的多余内容

一1
丰1112
彗11121112511
熭111211125114334
豔1112211125212514311215425221
豓111221112521251431134425221

以上内容变成:
一1
丰1112
彗11121112511
熭111211125114
豔111221112521
豓111221112521

内容如上,每行都会有中文字符,在中文字符后面都会跟一串数字。
现在想把超过12个数字的只保留前面12个数字(后面数字去掉),
少余12数字(含12数字)的不做改变。
需要:
因为文本很大,请尽可能减少系统资源的占用。
我在用记事本替换功能替换该文本中的字符时会死机。
作者: 随风    时间: 2009-4-13 04:03

从你提供的样本文件来看,格式都是“一个中文字符+一个空格+数字”
:
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a in (aa.txt) do (
  3.    set "num=%%a"
  4.    echo.!num:~0,14!
  5. ))>tem.txt
  6. start tem.txt
复制代码

作者: Batcher    时间: 2009-4-13 12:25

  1. @echo off
  2. gawk -F":" "{print substr($0,1,15)}" SunWb_MB1.txt>result.txt
复制代码
第三方命令行工具gawk.exe下载地址:
http://bbs.bathome.net/thread-1114-1-1.html
作者: BAT1    时间: 2009-4-13 16:45     标题: 回复 3楼 的帖子

为什么你的代码运行后得到的是,
我已经把文件名改为aa.txt了呀。
num:~0,14
num:~0,14
num:~0,14
num:~0,14
num:~0,14
num:~0,14
num:~0,14
num:~0,14
num:~0,14
作者: 随风    时间: 2009-4-13 17:34     标题: 回复 5楼 的帖子

你确定你的代码中有这一句吗?
setlocal enabledelayedexpansion
作者: BAT1    时间: 2009-4-14 02:45     标题: 回复 6楼 的帖子

代码是 通过点击“复制内容到剪贴板”得到的 应该不会少掉这一句吧?
作者: 随风    时间: 2009-4-14 07:34     标题: 回复 8楼 的帖子

有点怀疑他不是 通过点击“复制内容到剪贴板”得到的代码 ^_^
作者: zqz0012005    时间: 2009-4-14 09:16     标题: 回复 10楼 的帖子

这个的确和预处理有关(比较复杂,有待深入研究),写成7楼那样就没问题。
echo.!num:~0,14! 改成 echo !num:~0,14! 也没问题。
作者: zjw767676    时间: 2009-4-19 22:20

真的很复杂啊!下面的代码却可以!
  1. @echo off&setlocal EnableDelayedExpansion
  2. set a=123456
  3. (for %%i in (%a%) do (
  4.         set b=%%i
  5.          echo.!b:~3!
  6. ))>tem.txt
复制代码
少了逗号就不出错了!!!

[ 本帖最后由 zjw767676 于 2009-4-19 22:22 编辑 ]
作者: tab    时间: 2009-6-15 18:17

原帖由 Batcher 于 2009-4-13 12:25 发表
@echo off
gawk -F":" "{print substr($0,1,15)}" SunWb_MB1.txt>result.txt第三方命令行工具gawk.exe下载地址:
http://bbs.bathome.net/thread-1114-1-1.html


Batcher会的很多啊,佩服。
请问这里 -F":" 是起什么作用?好像这样也行:gawk  "{print substr($0,1,14)}" 1.txt
作者: Batcher    时间: 2009-6-15 22:33     标题: 回复 13楼 的帖子

-F开关用来指定除默认列分隔符之外的其它列分隔符,此例中就是指定以冒号作为列分隔符。




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