搜索
bottom↓
回复: 28

跪求各种高手帮忙,批处理一下介个 文本文件 ,救救小弟!

[复制链接]

出0入0汤圆

发表于 2011-4-15 16:27:17 | 显示全部楼层 |阅读模式
按照需求改为 各路高手把,小弟不才只能想到批处理这一条路

现有一个文本文档 内容如下

[29-05-2009 10:45:15]: Command:
[29-05-2009 10:45:15]: 00 A4 04 00 08 A0 00 00 01 72 95 00 01 00
[29-05-2009 10:45:15]: Response:
[29-05-2009 10:45:15]: 6F 13 84 08 A0 00 00 01 72 95 00 01 A5 07 5F 2D
[29-05-2009 10:45:15]: 04 7A 68 65 6E 90 00
[29-05-2009 10:45:15]: Command:
[29-05-2009 10:45:15]: 00 A4 02 00 02 10 80
[29-05-2009 10:45:15]: Response:
[29-05-2009 10:45:15]: 90 00
[29-05-2009 10:45:15]: Command:
[29-05-2009 10:45:15]: 00 B2 01 04 00
[29-05-2009 10:45:15]: Response:
[29-05-2009 10:45:15]: 01 6E 08 30 30 30 30 30 33 35 38 1C 32 35 30 30
[29-05-2009 10:45:15]: 31 30 30 30 30 30 30 31 30 31 30 32 30 33 30 34
[29-05-2009 10:45:15]: 30 35 30 36 30 37 30 38 00 08 3F 05 73 DF 69 CF
[29-05-2009 10:45:15]: 42 BE 90 00
[29-05-2009 10:45:15]: Command:
[29-05-2009 10:45:15]: 00 A4 02 00 02 10 01
[29-05-2009 10:45:15]: Response:
[29-05-2009 10:45:15]: 90 00
[29-05-2009 10:45:15]: Command:
[29-05-2009 10:45:15]: 00 B2 01 05 00
[29-05-2009 10:45:15]: Response:
[29-05-2009 10:45:15]: 01 08 38 30 38 30 30 30 30 30 02 1E 01 02 03 04
[29-05-2009 10:45:15]: 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
[29-05-2009 10:45:15]: 21 22 23 24 25 26 27 28 29 30 03 10 30 31 30 32
[29-05-2009 10:45:15]: 30 33 30 34 30 35 30 36 30 37 30 38 04 10 31 31
[29-05-2009 10:45:15]: 31 31 31 31 31 31 31 31 31 31 31 31 31 31 05 10
[29-05-2009 10:45:15]: 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
[29-05-2009 10:45:15]: 06 10 33 33 33 33 33 33 33 33 33 33 33 33 33 33
[29-05-2009 10:45:15]: 33 33 07 10 30 30 30 30 30 30 30 30 30 30 30 30
[29-05-2009 10:45:15]: 30 30 30 30 08 10 20 20 20 20 20 20 20 20 20 20
[29-05-2009 10:45:15]: 20 20 20 20 20 20 09 10 37 37 37 37 37 37 37 37
[29-05-2009 10:45:15]: 37 37 37 37 37 37 20 20 0A 10 31 32 33 34 35 36
[29-05-2009 10:45:15]: 37 38 39 30 31 32 33 34 35 36 90 00

现在需要把前面的 [29-05-2009 10:45:15]: 都去掉 (注意 里面的时间日期数字不是固定的) 然后 把多行的数字都合并到一行
处理完的结果如下面所示 每一个 Command: 与 Response: 为一组。

00 A4 04 00 08 A0 00 00 01 72 95 00 01 00
6F 13 84 08 A0 00 00 01 72 95 00 01 A5 07 5F 2D 04 7A 68 65 6E 90 00

00 A4 02 00 02 10 80
90 00

00 B2 01 04 00
01 6E 08 30 30 30 30 30 33 35 38 1C 32 35 30 30 31 30 30 30 30 30 30 31 30 31 30 32 30 33 30 34 30 35 30 36 30 37 30 38 00 08 3F 05 73 DF 69 CF 42 BE 90 00

00 A4 02 00 02 10 01
90 00

00 B2 01 05 00
01 08 38 30 38 30 30 30 30 30 02 1E 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 03 10 30 31 30 32 30 33 30 34 30 35 30 36 30 37 30 38 04 10 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 05 10 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 06 10 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 07 10 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 08 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 09 10 37 37 37 37 37 37 37 37 37 37 37 37 37 37 20 20 0A 10 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 90 00

最后的希望了, 因为公司有那么十几个 30M的文本文件 都是如上各式。 如果用手改 几乎等于要命了~~ 万能的论坛~~!! 帮帮小弟吧。 在这里 先谢过!

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

 楼主| 发表于 2011-4-15 16:31:46 | 显示全部楼层
冰天雪地 不穿衣服 裸跪半个小时 求高手!

出0入0汤圆

发表于 2011-4-15 16:33:00 | 显示全部楼层
复制到word里面,文本转表格,。删除列,试试看,

出0入0汤圆

 楼主| 发表于 2011-4-15 16:37:18 | 显示全部楼层
回复【2楼】erxun 老孟
-----------------------------------------------------------------------

谢谢您,但是目前来说前面的那些时间表示去掉好说 问题的关键是 怎么才能把那个 多行的 Response: 变成一行的(之间的回车都去掉)~~~

出0入0汤圆

发表于 2011-4-15 16:40:05 | 显示全部楼层
试试word里的替换也很好用,把[^?^?^?^?^?^?]替换为空 用"^?"代替日期时间中的每个字符,之后可以用“^#^p”替换为空

出0入0汤圆

发表于 2011-4-15 16:45:49 | 显示全部楼层
用正则表达式

出0入0汤圆

发表于 2011-4-15 16:53:58 | 显示全部楼层
用linux的脚本就简单了

出0入42汤圆

发表于 2011-4-15 16:59:08 | 显示全部楼层
找你们公司做上位机程序的,随手写个小程序就搞定了。

出0入0汤圆

发表于 2011-4-15 17:00:46 | 显示全部楼层
UtraEdit有个列编辑,搞定只需要一秒钟

出0入0汤圆

 楼主| 发表于 2011-4-15 17:03:38 | 显示全部楼层
楼上几位高手,说来惭愧 小弟由于学的是单片机,上位机一窍不通,。 刚毕业来这个公司实行,今天是工作的第五天。 公司不给任务做,只让搞一些这种鬼事情,老大说就用手动一个一个改就行了。小弟用手改了三天 实在受不了了。恳请楼上各位高手帮忙,用任何办法实现都行。小弟不才只能想出用批处理 但是 还不会,现学估计来不及了。

出0入0汤圆

 楼主| 发表于 2011-4-15 17:07:29 | 显示全部楼层
回复【8楼】franklinjin
-----------------------------------------------------------------------

下载一个试试看 目前小弟一件试过了 文本处理大师,TXTTOOLS1.6 Textpro5 DreamEdit:中文编辑排版专家2.36免费绿色版 等软件 ,均不可。一天的时间都鼓捣这个了,实在没办法了已经

出0入0汤圆

发表于 2011-4-15 17:08:06 | 显示全部楼层
用EXCEL也可以搞定

出0入0汤圆

 楼主| 发表于 2011-4-15 17:15:04 | 显示全部楼层
列编辑 果然够给力  目前最难得问题在此

Command:                                       
00 A4 04 00 08 A0 00 00 01 72 95 00 01 00      
Response:                                      
6F 13 84 08 A0 00 00 01 72 95 00 01 A5 07 5F 2D
04 7A 68 65 6E 90 00                           
Command:                                       
00 A4 02 00 02 10 80                           
Response:                                      
90 00                                          
Command:                                       
00 B2 01 04 00                                 
Response:                                      
01 6E 08 30 30 30 30 30 33 35 38 1C 32 35 30 30
31 30 30 30 30 30 30 31 30 31 30 32 30 33 30 34
30 35 30 36 30 37 30 38 00 08 3F 05 73 DF 69 CF
42 BE 90 00                                    
Command:                                       
00 A4 02 00 02 10 01                           
Response:                                      
90 00                                          
Command:                                       
00 B2 01 05 00                                 
Response:                                      
01 08 38 30 38 30 30 30 30 30 02 1E 01 02 03 04
05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30 03 10 30 31 30 32
30 33 30 34 30 35 30 36 30 37 30 38 04 10 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 05 10
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
06 10 33 33 33 33 33 33 33 33 33 33 33 33 33 33
33 33 07 10 30 30 30 30 30 30 30 30 30 30 30 30
30 30 30 30 08 10 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 09 10 37 37 37 37 37 37 37 37
37 37 37 37 37 37 20 20 0A 10 31 32 33 34 35 36
37 38 39 30 31 32 33 34 35 36 90 00            


怎么才能把那些 Response: 都改成一行的啊 并且格式遵循

00 A4 04 00 08 A0 00 00 01 72 95 00 01 00  
6F 13 84 08 A0 00 00 01 72 95 00 01 A5 07 5F 2D 04 7A 68 65 6E 90 00  

00 A4 02 00 02 10 80  
90 00  

00 B2 01 04 00  
01 6E 08 30 30 30 30 30 33 35 38 1C 32 35 30 30 31 30 30 30 30 30 30 31 30 31 30 32 30 33 30 34 30 35 30 36 30 37 30 38 00 08 3F 05 73 DF 69 CF 42 BE 90 00  

00 A4 02 00 02 10 01  
90 00  

00 B2 01 05 00  
01 08 38 30 38 30 30 30 30 30 02 1E 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 03 10 30 31 30 32 30 33 30 34 30 35 30 36 30 37 30 38 04 10 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 05 10 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 06 10 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 07 10 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 08 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 09 10 37 37 37 37 37 37 37 37 37 37 37 37 37 37 20 20 0A 10 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 90 00

出0入0汤圆

 楼主| 发表于 2011-4-15 17:22:21 | 显示全部楼层
注意 Command:  也会有 多行的情况发生

出0入0汤圆

发表于 2011-4-15 17:22:28 | 显示全部楼层
把原文件 上传一个上来  把修改后的样本上来一过后  


之后看我心情把  谁叫你用跪求 你既然这么看不起自己 哪我也不用重视你

出0入0汤圆

发表于 2011-4-15 17:23:18 | 显示全部楼层
http://boke.qq.com/play.html?v=7EPNyOKEDCT

我的最~~~~无聊手方法

出0入0汤圆

发表于 2011-4-15 17:25:37 | 显示全部楼层
如果你会用vim:
1.删除类似[29-05-2009 10:45:15]: 的时间信息
:%s/\[.*\]: //

2.每个Command上面添一空行(最后是大写字母O)
:g/Command/norm O

3.暂时把Command和下面的数据合并为一行
:g/Command/norm J

4.把Response和下面的数据都合并为一行
:g/^\d/-1 norm J

5.把Command/Response和后面的数据分开
:%s/: /:\r

我实际操作得到的数据:

Command:
00 A4 04 00 08 A0 00 00 01 72 95 00 01 00
Response:
6F 13 84 08 A0 00 00 01 72 95 00 01 A5 07 5F 2D 04 7A 68 65 6E 90 00

Command:
00 A4 02 00 02 10 80
Response:
90 00

Command:
00 B2 01 04 00
Response:
01 6E 08 30 30 30 30 30 33 35 38 1C 32 35 30 30 31 30 30 30 30 30 30 31 30 31 30 32 30 33 30 34 30 35 30 36 30 37 30 38 00 08 3F 05 73 DF 69 CF 42 BE 90 00

Command:
00 A4 02 00 02 10 01
Response:
90 00

Command:
00 B2 01 05 00
Response:
01 08 38 30 38 30 30 30 30 30 02 1E 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 03 10 30 31 30 32 30 33 30 34 30 35 30 36 30 37 30 38 04 10 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 05 10 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 06 10 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 07 10 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 08 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 09 10 37 37 37 37 37 37 37 37 37 37 37 37 37 37 20 20 0A 10 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 90 00

出0入0汤圆

发表于 2011-4-15 17:27:11 | 显示全部楼层
1 列编辑,去掉开头的无用列。
2 编辑器功能,去掉行尾空格;可以用正则搞定。
3 正则模式,删除无用空行。
4 正则模式,行尾回车换成空格。
5 正则模式,英文字母替换成回车。
Done.

几个文件手搞快,多了找Linux的工具用脚本。

出0入0汤圆

发表于 2011-4-15 17:31:17 | 显示全部楼层
补充:

这么整齐的格式,明显用程序生成的,用C写个程序来搞定也就10来分钟的事情。

出0入0汤圆

发表于 2011-4-15 17:31:54 | 显示全部楼层
第3步可以省略

出0入0汤圆

发表于 2011-4-15 17:49:27 | 显示全部楼层
还好我会一些VC,已经批处理过很多重复性数据了,楼主有空还是要学个PC工具,会有用的

出0入0汤圆

发表于 2011-4-15 17:52:08 | 显示全部楼层
用C++写个吧。并不是很难,图方便的话也不需要多高级的数据结构和算法。
字符处理应该会吧。。。。。。:-),祝你好运。建议不要一次性都读入内存,
读一条,写一条。研究一下,一天够了。总比手动改好吧。

出0入0汤圆

发表于 2011-4-15 17:55:13 | 显示全部楼层
用C#给你写的一个小程序ourdev_630963QJTRF5.rar(文件大小:70K) (原文件名:文字处理.rar)

楼主,我用C#给你写了一个,你运行一下试试~上面你给的内容测试了一下,基本上没有什么问题,你运行一下试试吧,大的文件没有试过,源程序包括工程文件也在这个压缩文件里面,用VS2008弄的,如果不对的话你试着改一下吧,对应你上面的格式的,取每行处理,如果格式变的话就不好用了。。。建议你处理完后亲自检查一下数据,原理上应该没问题,但如果文件大了,我也不能保证~

出0入0汤圆

发表于 2011-4-15 19:11:56 | 显示全部楼层
用“查找”,“替代”。

出0入0汤圆

发表于 2011-4-15 19:50:50 | 显示全部楼层
回复【16楼】Yaksa  解烟客
如果你会用vim:
1.删除类似[29-05-2009 10:45:15]: 的时间信息
:%s/\[.*\]: //
2.每个command上面添一空行(最后是大写字母o)
:g/command/norm o
3.暂时把command和下面的数据合并为一行
:g/command/norm j
4.把response和下面的数据都合并为一行
:g/^\d/-1 norm j
5.把command/response和后面的数据分开
:%s/: /:\r
......
-----------------------------------------------------------------------
第一次感受到vim的魅力。

出0入0汤圆

发表于 2011-4-16 01:53:11 | 显示全部楼层
一般的文本处理软件可以了吧,例如UE:

1 菜单-格式-删除尾部空格
2 查找“换行符”,全部替换为“空”
3 查找“Command:”,全部替换为“两个换行符”
4 查找“Response:”,全部替换为“一个换行符”

出0入0汤圆

发表于 2011-4-16 02:03:06 | 显示全部楼层
fscanf fprintf

出0入0汤圆

发表于 2011-4-30 20:15:53 | 显示全部楼层
一看就知道人家考得是你的耐心,本来这是个串口的收发数据。

两种可能性,一个是在分析别人的产品数据。

一种可能性就是看看你的耐心与动脑能力。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 03:52

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表