找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 87064|回复: 29

[文本处理] 批处理如何根据两个文本的前两列内容按指定条件提取相应数据行

[复制链接]
发表于 2016-11-29 16:32:14 | 显示全部楼层 |阅读模式
如何根据两列条件筛选数据
有文件夹AB 里面个有很多txt,现在各去一个txt文件说明
A文件中,第一列是日期,第二列是时间,后面各列是数据,但随即出现,不是每行都有数据,也不是每行都有一样多的数据
即  将文件A中第2列之后的每一列都是空的“空行”筛选出来,存为文件1,其余的存为文件2.
然后,以文件1中筛选出来的数据(即包含有时间和日期两列数据的文本数据)为标准,找出文件B中前两列与之匹配的行数据存为文件3,其余的存为文件4。

经过大家提醒 已经把excel转化成txt了,请问可以利用批处理完成吗?

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2016-11-29 21:59:40 | 显示全部楼层
请把以下文件作为例子打包压缩传上来:
A文件
B文件
文件1
文件2
文件3
文件4
 楼主| 发表于 2016-11-30 09:11:58 | 显示全部楼层
回复 3# GNU


   好的
发表于 2016-11-30 09:53:00 | 显示全部楼层
本帖最后由 happy886rr 于 2016-11-30 10:02 编辑

回复 1# newbat123
推荐用我写的RF工具,下载 http://www.bathome.net/thread-42266-1-1.html
完全pcre高级正则,回车换行都可匹配,兼容各种文本编码。
  1. @echo off
  2. REM 将文件A中第2列之后的每一列都是空的“空行”筛选出来,存为文件1
  3. rf /f /r:"^[0-9:]+[ \t]+[^ |\t]+[ |\t]*[\r\n]$" A>1

  4. REM 其余的存为文件2.
  5. rf /v /r:"^[0-9:]+[ \t]+[^ |\t]+[ |\t]*[\r\n]$" A>2

  6. pause
复制代码
发表于 2016-11-30 14:26:36 | 显示全部楼层
回复 1# newbat123


    你试试,看看结果,是否能解决问题
在P文中用gawk处理,gawk下载:http://www.bathome.net/s/tool/index.html?down&key=gawk
  1. @echo off&Title 测试
  2. set a=a2014.11.15.txt
  3. set b=b2014.11.15.txt
  4. set #1=1.txt
  5. set #2=2.txt
  6. set #3=3.txt
  7. set #4=4.txt
  8. CALL :_A&CALL :_B
  9. gawk "{if(NR==1){print $0 >"%#1%";print $0 >"%#2%"}else{if($3==null){print $0 >"%#1%"}else{print $0 >"%#2%"}}}" "%a%"
  10. gawk "{if(NR==1){print $0 >"%#3%";print $0 >"%#4%";exit}}" "%b%"
  11. gawk "{if(FNR>1){print $0}}" "%#1%" "%b%"|gawk "{if(!($1$2 in a)){ a[$1$2];print >>"%#4%"}else{print >>"%#3%"}}"
  12. gawk "/.*/" "%#4%"|gawk "{if($3!=null){print >"%#4%"}}"
  13. pause&exit

  14. :_A
  15. (
  16. echo 廓线日期        廓线时间        数据1        数据2        数据3        数据4        数据5        数据6        数据7        数据8        数据9        数据10        数据11        数据12        数据13        数据14        数据15        数据16        数据17        数据18        数据19        数据20        数据21        数据22        数据23
  17. echo 11/02/2014         12:27:55                                                                                                                                                                                                
  18. echo 11/02/2014         22:37:54                                                                                                                                                                                                
  19. echo 11/05/2014         02:07:48        10.4628                          10.2529                          9.98309                                                                                                                                 
  20. echo 11/05/2014         02:12:48        10.4628                          10.2229                          9.83319                                                                                                                                 
  21. echo 11/05/2014         02:17:48                                                                                                                                                                                                
  22. echo 11/05/2014         02:22:48        10.3428                          10.103                          9.62334                                                                                                                                 
  23. )>"%a%"
  24. goto :eof
  25. :_B
  26. (
  27. echo 廓线日期        廓线时间        OH1        OH2        OH3        OH4        OH5        OH6        OH7        OH8        OH9        OH10        OH11        OH12        OH13        OH14        OH15        OH16
  28. echo 11/02/2014         12:27:55        0.359751                                                                                                                        
  29. echo 11/02/2014         12:37:55        0.359751                                                                                                                        
  30. echo 11/02/2014         12:42:55        0.359751        1.88869                                                                                                               
  31. echo 11/02/2014         12:47:55        0.359751                                                                                                                        
  32. echo 11/05/2014         02:17:48        0.359751        1.94865                                                                                                               
  33. echo 11/02/2014         13:02:55        0.38973                                                                                                                        
  34. echo 11/06/2014         07:17:44        0.359751         
  35. )>"%b%"
  36. goto :eof
复制代码
 楼主| 发表于 2016-11-30 14:44:02 | 显示全部楼层
回复 5# CommandBatCmd


    数据因为太大,这是我截选的一小部分,所以不能按照这个程序运行
 楼主| 发表于 2016-11-30 14:45:09 | 显示全部楼层
回复 4# happy886rr


   
解压不出来
发表于 2016-11-30 15:10:25 | 显示全部楼层
回复 7# newbat123


    A文件与B文件,不是文本文件吗?
这两个文件最大有多少GB?
 楼主| 发表于 2016-11-30 15:12:07 | 显示全部楼层
回复 8# CommandBatCmd


    是excel文件,因为文件太多,希望能够有批处理
发表于 2016-11-30 15:19:00 | 显示全部楼层
回复 9# newbat123


    你的意思是用批处理直接操作excel文件?还是怎样的?
 楼主| 发表于 2016-11-30 15:21:06 | 显示全部楼层
回复 10# CommandBatCmd


    恩恩,是的是的 ,如果不可以的话,我可以把excel转成txt?
发表于 2016-11-30 15:21:46 | 显示全部楼层
回复 11# newbat123


    excel文件是二进制文件,需要保持为文本文件才能被其他程序处理啊
 楼主| 发表于 2016-11-30 15:32:21 | 显示全部楼层
回复 12# CommandBatCmd


    那我自己先处理成txt吧
发表于 2016-11-30 16:01:41 | 显示全部楼层
回复 13# newbat123
你直接用excel的宏命令编程就能解决,批处理不肯能直接处理excel,excel自带宏命令编程。
发表于 2016-11-30 16:34:01 | 显示全部楼层
1. 难道是 csv
2. 各位答主真是大好人。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 22:17 , Processed in 0.008238 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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