标题: [文本处理] [己解决]批处理去掉文本中的多余内容 [打印本页]
作者: 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
从你提供的样本文件来看,格式都是“一个中文字符+一个空格+数字”
:- @echo off&setlocal enabledelayedexpansion
- (for /f "delims=" %%a in (aa.txt) do (
- set "num=%%a"
- echo.!num:~0,14!
- ))>tem.txt
- start tem.txt
复制代码
作者: 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
作者: 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
真的很复杂啊!下面的代码却可以!- @echo off&setlocal EnableDelayedExpansion
- set a=123456
- (for %%i in (%a%) do (
- set b=%%i
- echo.!b:~3!
- ))>tem.txt
复制代码
少了逗号就不出错了!!!
[ 本帖最后由 zjw767676 于 2009-4-19 22:22 编辑 ]
作者: tab 时间: 2009-6-15 18:17
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 |