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

[文本处理] 批处理如何按前面数字从小到大排列并删除重复行?

求个批处理,望指点
29981----张华----60.25.204.211----天津市东丽区联通ADSL----2009-10-29----17:52:58----河北区建昌路89号
31064----李东生----61.163.224.38----河南省平顶山市 联通ADSL----2009-10-29----17:53:58----漓江路
15464----张国庆----122.136.51.166----吉林省延吉市联通----2009-10-29----20:8:20----商业大厦6a
47309----徐晒----222.242.170.194----湖南省郴州市 联通ADSL----2009-10-29----17:52:58
31064----李东生----61.163.224.38----河南省平顶山市 联通ADSL----2009-11-9----17:53:58----漓江路

顺序排列如下:
15464----张国庆----122.136.51.166----吉林省延吉市联通----2009-10-29----20:8:20----商业大厦6a
29981----张华----60.25.204.211----天津市东丽区联通ADSL----2009-10-29----17:52:58----河北区建昌路89号
31064----李东生----61.163.224.38----河南省平顶山市 联通ADSL----2009-10-29----17:53:58----漓江路
31064----李东生----61.163.224.38----河南省平顶山市 联通ADSL----2009-11-9----17:53:58----漓江路
47309----徐晒----222.242.170.194----湖南省郴州市 联通ADSL----2009-10-29----17:52:58

也就是前面数字从小到大排列,如有多行完全重复则保留一行

  1. @echo off
  2. for /f "tokens=1* delims=-" %%b in (list.txt) do set _#%%b=%%b---%%c
  3. >new.txt (for /f "tokens=1* delims==" %%b in ('set _') do echo %%c)
  4. new.txt
复制代码

TOP

123.txt是你原文本的名字,你可以任意更改
  1. @ECHO OFF
  2. Setlocal enableDelayedExpansion
  3. for /f "tokens=*" %%i in ('sort 123.txt') do (
  4. set a=0
  5. for /f "tokens=*" %%j in (123.txt) do (
  6. if %%i==%%j set /a a+=1
  7. )
  8. if !a!==1 set b=1
  9. if !b!==1 echo %%i
  10. if !a! geq 2 (
  11. set /a c+=1
  12. )
  13. if !c!==1 echo %%i
  14. if !c!==!a! set c=0
  15. )
复制代码

TOP

返回列表