标题: [文本处理] 批处理如何按前面数字从小到大排列并删除重复行? [打印本页]
作者: 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
- @echo off
- for /f "tokens=1* delims=-" %%b in (list.txt) do set _#%%b=%%b---%%c
- >new.txt (for /f "tokens=1* delims==" %%b in ('set _') do echo %%c)
- new.txt
复制代码
作者: poter 时间: 2012-9-25 00:10
123.txt是你原文本的名字,你可以任意更改- @ECHO OFF
- Setlocal enableDelayedExpansion
- for /f "tokens=*" %%i in ('sort 123.txt') do (
- set a=0
- for /f "tokens=*" %%j in (123.txt) do (
- if %%i==%%j set /a a+=1
- )
- if !a!==1 set b=1
- if !b!==1 echo %%i
- if !a! geq 2 (
- set /a c+=1
- )
- if !c!==1 echo %%i
- if !c!==!a! set c=0
- )
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |