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

[文本处理] 批处理如何将多个txt文本按每一行前面/行首/开头的数字大小排序?

本帖最后由 pcl_test 于 2017-6-7 07:20 编辑

有十几个数据庞大的txt文件,里面有很多行数字,全部复制到word排列太麻烦了,有什么bat代码可以直接在txt文件内执行的吗?c++那些不会用,还是bat实在,虽然慢些。
例如
4561248542——小明——42156元
124321345—— 小芳——1243元
4545642——小红——421元
6321354——小绿——580元
423165——小蓝——50元
78545631——小田——1000元
4513——小鸡——7元
.
.
.
.
.
大致是这样,数字后面有几个符号和中文的,数字最小4位,最大11位,如何从小到大排列?网上查的有些都在前面加了个符号,符号虽然可以替换,但多个txt批处理都替换就麻烦了,众坛友帮帮忙,感激...
1

评分人数

    • pcl_test: 发帖前先使用论坛搜索PB -2

斑竹你好,论坛里的每一个关键字的帖子我都尝试过了,但都只是首数字是按大小,第二位就不是了。
我需要的是每一行前面十位数字,是按大小排列,之后的中文跟着前面的数字移动

举个栗子



123赤
51橙
2347黄
97绿
3256789青
985蓝
8紫

试过的帖子处理后的是

123赤
2347黄
3256789青
51橙
8紫
97绿
985蓝

我想要的是
8紫
51橙
97绿
123赤
985蓝
2347黄
3256789青

突然想到一个复合标题的词,递增。。。嗯,是。。。就这个,交流少不懂表达,斑竹莫怪...

TOP

本帖最后由 pcl_test 于 2016-7-12 15:41 编辑

第三方
http://batch-cn.qiniudn.com/tool/7.6/sort.exe
  1. @echo off
  2. for /f "delims=" %%a in ('dir /a-d/b *.txt') do sort -n %%a>New_%%a
  3. pause
复制代码

TOP

  1. //&cls&dir /a-d/b *.txt|cscript -nologo -e:jscript "%~f0"&pause&exit
  2. var fso = new ActiveXObject('Scripting.Filesystemobject');
  3. function SortNumber(file){
  4.     var f = fso.OpenTextFile(file, 1);
  5.     try{
  6.         var txt = f.ReadAll().split(/\r\n/).sort(
  7.             function(a, b){return Number(a.replace(/^\s*(\d+).*/, '$1'))-Number(b.replace(/^\s*(\d+).*/, '$1'))}
  8.         ).join('\r\n');
  9.         f.Close();
  10.         fso.OpenTextFile(file, 2).Write(txt);
  11.     }catch(e){}
  12. }
  13. while(!WSH.StdIn.AtEndOfStream)SortNumber(WSH.StdIn.ReadLine());
  14. WSH.echo('Done');
复制代码

TOP

不知道你为啥要用word排序,导入到Excel里面排序不是挺方便的嘛。

TOP

回复 3# pcl_test


    可以了,就是一定要依赖第三方的exe才行对吧?bat本身没有递进排序功能...

TOP

回复 5# GNU


    额,是excel,手滑打错了,谢谢指正,数据太庞大了,导入excel直接卡死...

TOP

回复 6# 小丑丶鱼心有愧


    Windows系统有自带的sort命令,但是它不支持那么多的排序规则。第三方的sort比较强大。
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 4# pcl_test


    斑竹,真是太感谢你了,完美解决。三楼的配合三方是生成新的处理后的new文件,四楼的是在文件内处理...


             书到用时方恨少,太感谢了...

TOP

回复 7# 小丑丶鱼心有愧


Excel 2013 最大支持一百多万行,你的单个txt文件大概多少行?
特别大的文件sort也会比较占内存。
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 8# gawk


    sort是怎么编程的呢,有无书籍之类的?是属于java还是c++?...

TOP

回复 11# 小丑丶鱼心有愧


    源代码是C语言
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

PowerShell 可以这样,速度不咋地
  1. get-Content a.txt | sort @{e={1*($_ -split '\D')[0]}}
复制代码

TOP

返回列表