标题: [文本处理] 批处理如何将多个txt文本按每一行前面/行首/开头的数字大小排序? [打印本页]
作者: 小丑丶鱼心有愧 时间: 2016-7-11 20:27 标题: 批处理如何将多个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批处理都替换就麻烦了,众坛友帮帮忙,感激...
作者: 小丑丶鱼心有愧 时间: 2016-7-11 22:37
斑竹你好,论坛里的每一个关键字的帖子我都尝试过了,但都只是首数字是按大小,第二位就不是了。
我需要的是每一行前面十位数字,是按大小排列,之后的中文跟着前面的数字移动
举个栗子
原
123赤
51橙
2347黄
97绿
3256789青
985蓝
8紫
试过的帖子处理后的是
123赤
2347黄
3256789青
51橙
8紫
97绿
985蓝
我想要的是
8紫
51橙
97绿
123赤
985蓝
2347黄
3256789青
突然想到一个复合标题的词,递增。。。嗯,是。。。就这个,交流少不懂表达,斑竹莫怪...
作者: pcl_test 时间: 2016-7-12 13:42
本帖最后由 pcl_test 于 2016-7-12 15:41 编辑
第三方
http://batch-cn.qiniudn.com/tool/7.6/sort.exe- @echo off
- for /f "delims=" %%a in ('dir /a-d/b *.txt') do sort -n %%a>New_%%a
- pause
复制代码
作者: pcl_test 时间: 2016-7-12 14:28
- //&cls&dir /a-d/b *.txt|cscript -nologo -e:jscript "%~f0"&pause&exit
-
- var fso = new ActiveXObject('Scripting.Filesystemobject');
- function SortNumber(file){
- var f = fso.OpenTextFile(file, 1);
- try{
- var txt = f.ReadAll().split(/\r\n/).sort(
- function(a, b){return Number(a.replace(/^\s*(\d+).*/, '$1'))-Number(b.replace(/^\s*(\d+).*/, '$1'))}
- ).join('\r\n');
- f.Close();
- fso.OpenTextFile(file, 2).Write(txt);
- }catch(e){}
- }
- while(!WSH.StdIn.AtEndOfStream)SortNumber(WSH.StdIn.ReadLine());
- WSH.echo('Done');
复制代码
作者: GNU 时间: 2016-7-12 17:51
不知道你为啥要用word排序,导入到Excel里面排序不是挺方便的嘛。
作者: 小丑丶鱼心有愧 时间: 2016-7-12 19:23
回复 3# pcl_test
可以了,就是一定要依赖第三方的exe才行对吧?bat本身没有递进排序功能...
作者: 小丑丶鱼心有愧 时间: 2016-7-12 19:24
回复 5# GNU
额,是excel,手滑打错了,谢谢指正,数据太庞大了,导入excel直接卡死...
作者: gawk 时间: 2016-7-12 19:31
回复 6# 小丑丶鱼心有愧
Windows系统有自带的sort命令,但是它不支持那么多的排序规则。第三方的sort比较强大。
作者: 小丑丶鱼心有愧 时间: 2016-7-12 19:33
回复 4# pcl_test
斑竹,真是太感谢你了,完美解决。三楼的配合三方是生成新的处理后的new文件,四楼的是在文件内处理...
书到用时方恨少,太感谢了...
作者: gawk 时间: 2016-7-12 19:33
回复 7# 小丑丶鱼心有愧
Excel 2013 最大支持一百多万行,你的单个txt文件大概多少行?
特别大的文件sort也会比较占内存。
作者: 小丑丶鱼心有愧 时间: 2016-7-12 19:35
回复 8# gawk
sort是怎么编程的呢,有无书籍之类的?是属于java还是c++?...
作者: gawk 时间: 2016-7-12 21:11
回复 11# 小丑丶鱼心有愧
源代码是C语言
作者: WHY 时间: 2016-7-14 22:38
PowerShell 可以这样,速度不咋地- get-Content a.txt | sort @{e={1*($_ -split '\D')[0]}}
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |