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

[文件操作] 批处理怎样将txt文本内容根据每一行指定字段/列的数字排序?

本帖最后由 pcl_test 于 2016-11-8 22:45 编辑

45.64.21.14 1173 a248.e.akamai.net
202.175.5.103 955 a248.e.akamai.net
202.175.5.184 2189 a248.e.akamai.net
...下面还有几千条,不列举了

以上为随机输出结果,我需要将这个随机文档重新排序前面是IP 中间是延时,需要按照中间的延时数字排序(延时小的在前面)然后重新输出文本,这种格式:

202.175.5.103 955 a248.e.akamai.net
45.64.21.14 1173 a248.e.akamai.net
202.175.5.184 2189 a248.e.akamai.net
...下面还有几千条,不列举了

请问BAT如何实现

  1. @if(0)==(0) echo off
  2. CScript -NoLogo -E:JScript %0 <a.txt >b.txt
  3. pause&goto:eof
  4. @end
  5. var arr = [];
  6. while (!WScript.StdIn.AtEndOfStream){
  7.    arr.push(WScript.StdIn.Readline().replace(/ +/," ").split(" "));
  8. }
  9. arr.sort(function(a, b){ return a[1] - b[1] });
  10. for (var i = 0, len = arr.length; i < len; i++) {
  11.     WSH.Echo(arr[i].join(" "))
  12. }
复制代码

TOP

回复 3# pcl_test


    太牛了,能用,学习了!!

TOP

回复 3# pcl_test


    谢谢大神 我试试

TOP

回复 2# aa77dd@163.com
膜拜 ,多谢大神,能用!但是是这样的,能去掉上面的路径么
D:\Program Files (x86)\psiphon3\checkakamai>echo 203.78.32.86 505 a248.e.akamai.net
203.78.32.86 505 a248.e.akamai.net

D:\Program Files (x86)\psiphon3\checkakamai>echo 203.78.32.104 507 a248.e.akamai.net
203.78.32.104 507 a248.e.akamai.net

D:\Program Files (x86)\psiphon3\checkakamai>echo 203.78.32.70 509 a248.e.akamai.net
203.78.32.70 509 a248.e.akamai.net

TOP

本帖最后由 pcl_test 于 2016-11-8 23:08 编辑

用Excel亦可快捷排序

第三方 gnu sort
  1. ::先下载http://batch-cn.qiniudn.com/tool/2.1/sort.exe
  2. @sort -n -k 2 "1.txt">"2.txt"
复制代码
  1. rem win7及以上系统运行
  2. powershell -c "gc '文本.txt'|sort {1*($_ -split '\s+')[1]}"
  3. pause
复制代码

TOP

  1. @echo off & setlocal EnableDelayedExpansion
  2. if "%1"=="sub" (
  3.     for /f "tokens=1-3" %%a in (a.txt) do (
  4.         set "s=          %%b"        
  5.         echo !s:~-10! %%a %%c
  6.     )
  7.     exit
  8. ) else (
  9.     >b.txt ( for /f "tokens=1-3" %%a in ('cmd /c %0 sub ^| sort') do echo %%b %%a %%c)
  10. )
  11. start b.txt
  12. pause
复制代码

TOP

返回列表