Board logo

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

作者: zcled    时间: 2012-9-23 08:40     标题: 批处理如何按前面数字从小到大排列并删除重复行?

求个批处理,望指点
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

也就是前面数字从小到大排列,如有多行完全重复则保留一行
作者: yangfengoo    时间: 2012-9-23 10:54

  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
复制代码

作者: poter    时间: 2012-9-25 00:10

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. )
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2