返回列表 发帖

[文本处理] 批处理获取重复行(只保留一次)

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
endlocalCOPY
方法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!
)COPY
方法3:
gawk "{a[$0]++}END{for(i in a)if(a[i]>1)print i}" a.txt > b.txtCOPY
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

谢谢,确实在找它。

TOP

不错不错不错不错不错

TOP

不错不错不错不错不错

TOP

回复 4# MCRGZN


    呃,请不要无意义回帖,刷分到此为止

TOP

gawk "a[$0]++" a.txt>b.txtCOPY
水一个,以前百度看到的解法

TOP

返回列表