[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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

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

TOP

回复 11# 小丑丶鱼心有愧


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

TOP

回复 8# gawk


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

TOP

回复 7# 小丑丶鱼心有愧


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

TOP

回复 4# pcl_test


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


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

TOP

回复 6# 小丑丶鱼心有愧


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

TOP

回复 5# GNU


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

TOP

回复 3# pcl_test


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

TOP

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

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

本帖最后由 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

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

举个栗子



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

试过的帖子处理后的是

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

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

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

TOP

返回列表