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 编辑 ]
作者: cjiabing 时间: 2010-8-29 12:20
你的第一个方法很好,我也搜藏有,给你再补一个:- type 1.txt>>test.txt
- type 2.txt>>test.txt
- setlocal enabledelayedexpansion
- set /p wb1=请输入处理后生成的[路径]文本:
- for /f "delims=" %%a in ('sort test.txt') do (
- if not %%a equ !b! echo %%a>>过滤.txt
- set b=%%a)
复制代码
原始代码不懂是谁写的了,很好,搜藏!~
作者: pcl_test 时间: 2016-8-8 15:05
第三方- gawk "!a[$0]++" "a.txt" "b.txt">"c.txt"
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |