|
|
本帖最后由 pcl_test 于 2016-8-8 14:57 编辑
两个文本文件A.txt和B.txt,每个文件内容都只有一列,需合并两个文件的内容到新文件C.TXT并删除重复行(重复内容只保留一个).示例如下:
A.txt的内容:
B.txt的内容:
合并并删除重复行后的C.txt应该是:
111 ┐
222 │
333 ├────> A.Txt的内容
444 │┐┐
555 │┼┼──>A.TXT和B.TXT共有的重复内容(删除重复,作唯一化)
666 ┘┘│
777 ├──>B.TXT的内容
888 │
999 ──┘
即合并追加两文件列表内容,并删除重复行作唯一化处理(红色部分代表重复内容),求教.
搜索原论坛帖子,整理出有两种方法可以实现,总结如下代码:- @echo off
- set begin=%time%
- cd.>c.txt
- REM 方法一,测试花费时间在2毫秒左右
- REM 结果:
- REM 花费时间: 0 小时 0 分钟 0 秒 2 毫秒
- for /f "eol= delims=" %%a in (a.txt b.txt) do @if not defined %%a @(set "%%a=1" & echo %%a >> c.txt)
- REM 方法二,测试花费时间在55秒左右
- REM 结果:
- REM 完成,共花费时间: 0 小时 0 分钟 0 秒 54 毫秒
- REM for /f "delims=" %%i in (A.txt B.txt) do (
- REM find /i "%%i" C.txt||echo %%i>>C.txt
- REM )
- call :time0 %begin% %time% duration
- cls
- echo 完成,共花费时间: %duration%
- pause
- goto :eof
- :time0
- ::计算时间差(封装)
- @echo off&setlocal&set /a n=0&rem code 随风 @bbs.bathome.net
- for /f "tokens=1-8 delims=.: " %%a in ("%~1:%~2") do (
- set /a n+=10%%a%%100*360000+10%%b%%100*6000+10%%c%%100*100+10%%d%%100
- set /a n-=10%%e%%100*360000+10%%f%%100*6000+10%%g%%100*100+10%%h%%100)
- set /a s=n/360000,n=n%%360000,f=n/6000,n=n%%6000,m=n/100,n=n%%100
- set "ok=%s% 小时 %f% 分钟 %m% 秒 %n% 毫秒"
- endlocal&set %~3=%ok:-=%&goto :EOF
复制代码 [ 本帖最后由 dejoy 于 2010-8-29 09:21 编辑 ] |
|