标题: [文本处理] 批处理怎样把两个txt文本前6列数字完全相同的行合并后另存? [打印本页]
作者: hkldd 时间: 2015-6-19 01:02 标题: 批处理怎样把两个txt文本前6列数字完全相同的行合并后另存?
工作中经常碰到服务器日志文档中,相同ip地址只是端口不一样,我想把它们合并找岀来分析,谢谢大家!
如以下示例;
对比a.txt文本与b.txt文本,把前6列数字完全相同的行合并后,另存为c.txt文本文件的样式。
a.txt- 01 02 03 04 05 06 55
- 06 07 08 09 10 11 45
- 11 12 13 14 15 16 36
- 17 18 19 20 21 22 30
- 23 24 25 26 27 28 23
- 22 33 44 55 66 77 18
- 55 66 69 70 71 72 16
- 26 27 28 29 33 34 13
复制代码
b.txt- 01 02 03 04 05 06 2015001
- 06 07 08 09 10 11 2015002
- 11 12 13 14 15 16 2015003
- 17 18 19 20 21 22 2015004
- 23 24 25 26 27 28 2015005
- 29 30 31 32 33 36 2015006
- 01 02 04 05 07 09 2015007
复制代码
c.txt- 01 02 03 04 05 06 55 2015001
- 06 07 08 09 10 11 45 2015002
- 11 12 13 14 15 16 36 2015003
- 17 18 19 20 21 22 30 2015004
- 23 24 25 26 27 28 23 2015005
复制代码
作者: bailong360 时间: 2015-6-19 23:04
- @echo off
- for /f "tokens=1-6*" %%1 in (a.txt) do set "%%1#%%2#%%3#%%4#%%5#%%6=%%7"
- for /f "tokens=1-6*" %%1 in (b.txt) do if defined %%1#%%2#%%3#%%4#%%5#%%6 set "##%%1 %%2 %%3 %%4 %%5 %%6=%%7"
- (for /f "tokens=1-6* delims=#=" %%1 in ('set ##') do echo %%1 %%2 %%3 %%4 %%5 %%6 %%7)>$c.txt
- pause
复制代码
作者: hkldd 时间: 2015-6-20 10:46
bailong360 大侠你好!
经测试得到的c.txt文本如下;它只找出了两个文本前6列相同的行,没有把a.txt中第7列数与b.txt中第7列数合并,麻烦你再看一下要修改哪里?谢谢!- 01 02 03 04 05 06 2015001
- 06 07 08 09 10 11 2015002
- 11 12 13 14 15 16 2015003
- 17 18 19 20 21 22 2015004
- 23 24 25 26 27 28 2015005
复制代码
作者: xxpinqz 时间: 2015-6-22 13:23
回复 3# hkldd
2楼3行改:- for /f "tokens=1-6*" %%1 in (b.txt) do if defined %%1#%%2#%%3#%%4#%%5#%%6 set "##%%1 %%2 %%3 %%4 %%5 %%6=!%%1#%%2#%%3#%%4#%%5#%%6! %%7"
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |