手机
当前位置:查字典教程网 >脚本专栏 >DOS/BAT >批处理实现过滤重复行
批处理实现过滤重复行
摘要:a.txt内容如下:123456789123123789获取重复的行,并且重复的行只保留一次,处理后得到b.txt内容如下:123789方法...

a.txt内容如下:

123

456

789

123

123

789

获取重复的行,并且重复的行只保留一次,处理后得到b.txt内容如下:

123

789

方法1:

@echo off REM 缺点1:无法处理特别大的文件 REM 缺点2:需要使用文件中没有出现的字符来标记变量(本例中使用的是下划线) setlocal for /f "delims=" %%i in (a.txt) do ( set /a _%%i+=1 ) (for /f "tokens=1-2 delims=_=" %%i in ('set _') do ( if %%j gtr 1 ( echo,%%i ) ))>b.txt endlocal

方法2:

@echo off setlocal enabledelayedexpansion set "PriLine=" set "DupNum=1" (for /f "delims=" %%i in ('sort a.txt') do ( if "!PriLine!" equ "%%i" ( set /a DupNum+=1 ) else ( if !DupNum! gtr 1 ( echo,!PriLine! ) set DupNum=1 ) set "PriLine=%%i" ))>b.txt if !DupNum! gtr 1 ( >>b.txt echo,!PriLine! )

方法3:

gawk "{a[$0]++}END{for(i in a)if(a[i]>1)print i}" a.txt > b.txt

方法4:(更加简洁)

gawk "a[$0]++" a.txt>b.txt

方法5:

@echo off for /f "tokens=*" %%i in (a.txt) do set #%%i=%%i (for /f "tokens=2 delims==" %%i in ('set #') do echo %%i)>b.txt

【批处理实现过滤重复行】相关文章:

用批处理实现将文件以数字重命名的代码

DOS 下的批处理文件

利用批处理实现文件复制并压缩的实现代码

批处理 数码雨代码解释

用批处理实现删除大小和类型一样的文件的代码

用批处理实现的删除特定时间以前的文件

批处理删除自身的命令小结

批处理实现ping数据中文版

批处理的高级运用技巧

批处理中常用的符号总结

精品推荐
分类导航