Board logo

标题: [文本处理] [己解决]批处理将文本中每行按特定位置的数字从小到大排序 [打印本页]

作者: keshun    时间: 2014-2-17 10:54     标题: [己解决]批处理将文本中每行按特定位置的数字从小到大排序

本帖最后由 pcl_test 于 2017-3-25 07:47 编辑

批处理对a.txt进行处理得出b.txt,求代码?谢谢!
主要是方便检查是否有重复IP。比如下面两个192.168.81.50,进行顺序排列容易排查出来进行手动更正。

a.txt内容如下:
user=2549   assign_ip=192.168.81.50   
user=2216   assign_ip=192.168.81.26   
user=2217   assign_ip=192.168.81.17   
user=2345   assign_ip=192.168.81.45   
user=2458   assign_ip=192.168.81.40   
user=2256   assign_ip=192.168.81.56   
user=2114   assign_ip=192.168.81.14   
user=2478   assign_ip=192.168.81.78   
user=2350   assign_ip=192.168.81.50   

b.txt内容如下:
user=2114   assign_ip=192.168.81.14
user=2217   assign_ip=192.168.81.17
user=2216   assign_ip=192.168.81.26
user=2458   assign_ip=192.168.81.40
user=2345   assign_ip=192.168.81.45
user=2549   assign_ip=192.168.81.50
user=2350   assign_ip=192.168.81.50  
user=2256   assign_ip=192.168.81.56
user=2478   assign_ip=192.168.81.78
作者: apang    时间: 2014-2-17 11:10

  1. @echo off
  2. %1(for /f "tokens=1*" %%a in ('"%~0" :^|sort') do echo,%%b)>b.txt&exit/b
  3. for /f "tokens=1-3delims==" %%a in (a.txt) do echo,%%c %%a=%%b=%%c
复制代码

作者: keshun    时间: 2014-2-17 17:45

回复 2# apang


    谢谢,代码试过可以,但把a.txt文本内容更改如下格式就会出错,望解决?

user=2549   profile=vip4M   assign_ip=192.168.81.49   
user=2216   profile=vip8M   assign_ip=192.168.81.26   
user=2217   profile=vip4M   assign_ip=192.168.81.17   
user=2345   profile=vip4M   assign_ip=192.168.81.45   
user=2458   profile=vip8M   assign_ip=192.168.81.40   
user=2256   profile=vip4M   assign_ip=192.168.81.56   
user=2114   profile=vip4M   assign_ip=192.168.81.14
作者: xxpinqz    时间: 2014-2-17 19:42

10年,多少懂点for吧,几分钟看下置顶贴for入门到精通。
作者: keshun    时间: 2014-2-17 21:50

回复 4# xxpinqz

谢谢提醒,自己修改后OK了。
  1. @echo off
  2. %1(for /f "tokens=1*" %%a in ('"%~0" :^|sort') do echo,%%b)>>b.txt&exit/b
  3. for /f "tokens=1-4delims==" %%a in (a.txt) do echo,%%d %%a=%%b=%%c=%%d
复制代码





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