- 帖子
- 306
- 积分
- 529
- 技术
- 70
- 捐助
- 0
- 注册时间
- 2021-10-13
|
文本行去重是个经典话题,中外论坛老帖多多,但比较精简的批处理版本至少有两个。
一》find版本,上式区分大小写,下式不区分大小写,不保留空行
cd.>out.txt &for /f "delims=" %%s in (in.txt) do (find "%%~s" out.txt>nul||echo,%%s>>out.txt)
cd.>out.txt &for /f "delims=" %%s in (in.txt) do (find /i "%%~s" out.txt>nul||echo,%%s>>out.txt)
二》awk版本,区分大小写,保留空行
awk.exe "!existLines[$0]++" in.txt>out.txt
二者的算法虽然类似,但运行效率有所差别,尤其是对大数据文件(成千上万行+)。
find版的for...in()还会限制每行读入字符量不超过8k。
顺便再重复一下:set/p的单次读入字符量不能超过1k。
至于awk处理大数据文件的能限,可请已知者加注... |
-
1
评分人数
-
|