45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:如何通过批处理实现过滤重复行?

如何通过批处理实现过滤重复行?

2016-07-26 17:04:20 来源:www.45fan.com 【

如何通过批处理实现过滤重复行?

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

本文地址:http://www.45fan.com/a/question/60324.html
Tags: 实现 批处理 过滤
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部