标题: [文本处理] [已解决]批处理如何统计重复行并排序? [打印本页]
作者: necnec1 时间: 2021-10-3 22:26 标题: [已解决]批处理如何统计重复行并排序?
本帖最后由 necnec1 于 2021-10-5 10:08 编辑
BSZXX210827
BSZXX210827
BSZXX210827
BSZXX210828
BSZXX210829
BSZXX210830
BSZXX210831
BSZXX210831
BSZXX210831
一个文本文件AA.TXT 内容如上 重复的行 能不能统计出 重复了多少次 并按照重复的次数从大到小的排序
BSZXX210828 1次
BSZXX210829 1次
BSZXX210830 1次
BSZXX210827 3次
BSZXX210831 3次
最后结果像这样
作者: Batcher 时间: 2021-10-4 21:30
回复 1# necnec1 - gawk "BEGIN {PROCINFO [\"sorted_in\"]=\"@val_num_asc\"}{a[$0]++}END{for(i in a)print i,a[i]}" 1.txt > 2.txt
复制代码
http://bcn.bathome.net/s/tool/index.html?key=gawk
作者: qixiaobin0715 时间: 2021-10-5 09:03
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in (aa.txt) do set /a %%a+=1
- set BSZXX
- pause
复制代码
作者: necnec1 时间: 2021-10-5 10:07
谢谢楼上的各位 问题已解决
作者: Batcher 时间: 2021-10-6 21:51
回复 4# qixiaobin0715
严格来说,set命令的结果不是楼主要求的“并按照重复的次数排序”
作者: qixiaobin0715 时间: 2021-10-7 10:35
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in (aa.txt) do (
- if not defined %%a set %%a=1000
- set /a %%a+=1
- )
- set BSZXX|sort /+13>aa.log
- for /f "tokens=1* delims==" %%i in (aa.log) do (
- set n=%%j
- set n=!n:~1!
- set /a n=n
- echo,%%i !n!次
- )
- del aa.log
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |