[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理怎样排除重复并列出重复的行及个数?

本帖最后由 gcbgczhang 于 2021-7-31 14:21 编辑

请教各位老师,我想对一个文本文件里的各行字符串排除重复并列出重复行内容及个数
文件list.txt内容:
111111
哈哈
333333
65767
哈哈
林林
111111
哈哈
...
排重后输入到文件tmp1.txt内容:
111111
哈哈
333333
65767
林林
重复的输到文件tmp2.txt内容:
11出现3次
哈哈出现2次

回复 4# Batcher


  关键我是个菜鸟,很多年没写命令行了,gawk这是一个命令吗

TOP

我自己写的是这样,大脑有限只能记得这些了,目前暂时能用,但执行的不快。这个是拖入后直接排重计数
@echo off

set var=:
set /p var=拖入文件(请与本工具在同一文件夹)
echo %var%>tmp.txt
for /f "delims=*" %%i in (tmp.txt) do set "var=%%~nxi"
echo 0>tmp.txt>nul
for /f "delims=*" %%i in (%var%) do (
findstr "%%i" "tmp.txt">nul||echo %%i>>tmp.txt
)
del "排重%var%" >nul 2>nul
ren tmp.txt 排重%var%


::::下面是列出重复行及个数
@echo off
del "统计重复%var%" >nul 2>nul
for /f %%i in (排重%var%) do (
        for /f %%j in ('type %var% ^| find "%%i" /c') do (
                if %%j GTR 1 echo %%i有%%j次 >>统计重复%var%

))
pause

TOP

回复 7# Batcher


    好的,我下载了,一会看看是什么功能

TOP

返回列表