Board logo

标题: 【已解决】怎样对时间文本内容进行排序?? [打印本页]

作者: ksla    时间: 2017-2-17 00:47     标题: 【已解决】怎样对时间文本内容进行排序??

本帖最后由 ksla 于 2017-2-17 16:54 编辑

很久无上过来了,这次又遇到问题了,如果发帖格式不对,请管理人员指出!!谢谢

寻求大大帮个小忙!!非常感谢!!!

平时处理要一些txt文件,想通过  时间排序  对  文本内容   进行排列,以防重复再次看到相同内容!!

示例文本
未外理前:
1中国        中国数据        2017年2月19日8时9分47秒        http://aa.com
2美国        数据之家        2017年2月5日6时19分47秒        http://bb.com
3越南        越南之家        2017年2月18日16时5分47秒        http://cc.com
4法国        法国数据        2017年2月18日16时19分3秒        http://dd.com
5金月        金月数据        2017年2月5日16时19分47秒        http://ee.com
6哈哈        哈哈数据        2017年2月20日18时19分47秒        http://ff.com

处理后:
6哈哈        哈哈数据        2017年2月20日18时19分47秒        http://ff.com
1中国        中国数据        2017年2月19日8时9分47秒        http://aa.com
4法国        法国数据        2017年2月18日16时19分3秒        http://dd.com
3越南        越南之家        2017年2月18日16时5分47秒        http://cc.com
2美国        数据之家        2017年2月5日6时19分47秒        http://bb.com
5金月        金月数据        2017年2月5日16时19分47秒        http://ee.com
作者: CrLf    时间: 2017-2-17 02:46

本帖最后由 CrLf 于 2017-2-17 17:00 编辑
  1. 1>1/* :
  2. @echo off
  3. cscript /nologo /e:jscript "%~0" <测试.txt >排序.txt
  4. pause & exit /b
  5. */
  6. var text = WSH.StdIn.ReadAll()
  7. var arr=[];
  8. text.replace(
  9. /.+? +(\d+)年(\d+)月(\d+)日(\d+)时(\d+)分(\d+)秒.+/mg,
  10. function($0,Y,m,d,H,M,S){
  11. arr.push({dt:new Date(Y+'/'+m+'/'+d+' '+H+':'+M+':'+S),str:$0})
  12. }
  13. )
  14. arr = arr.sort(function(a,b){return a.dt-b.dt})
  15. for(var i in arr){
  16. WSH.Echo(arr[i].str)
  17. }
复制代码

作者: ksla    时间: 2017-2-17 09:58

回复 2# CrLf


    谢谢你的救助!!

我提示了以下错误!!
CScript 错误: 无法找到脚本“e:\cscript\1.bat”的脚本引擎“cscript”。

我电脑无有e盘,我将它修改成  cscript /nologo /d:cscript "%~0" <测试.txt >排序.txt   就出现以下错误!!
输入错误: 指定了未知的选项“/d:cscript”。

我尝试过百度,但无果!!
作者: ksla    时间: 2017-2-17 11:11

回复 2# CrLf


    {:3_63:} 大哥,,出来帮帮忙!!
作者: 回家路上    时间: 2017-2-17 15:05

/e:cscript”改为“/e:jscript
作者: ksla    时间: 2017-2-17 15:25

回复 5# 回家路上


    C:\Users\89054\Desktop\新建文件夹 (8)\1.bat(1, 6) Microsoft JScript 编译错误: 条件编译已关闭
提示这个错误!~!
作者: yu2n    时间: 2017-2-17 15:38

  1. @set @n=0;/* & echo off
  2. pushd %~dp0
  3. cscript /nologo /e:jscript "%~0" <测试.txt >排序.txt
  4. pause & exit /b
  5. */
  6. var text = WSH.StdIn.ReadAll()
  7. var arr=[];
  8. text.replace(
  9. /.+? +(\d+)年(\d+)月(\d+)日(\d+)时(\d+)分(\d+)秒.+/mg,
  10. function($0,Y,m,d,H,M,S){
  11. arr.push({dt:new Date(Y+'/'+m+'/'+d+' '+H+':'+M+':'+S),str:$0})
  12. }
  13. )
  14. arr = arr.sort(function(a,b){return b.dt-a.dt})
  15. for(var i in arr){
  16. WSH.Echo(arr[i].str)
  17. }
复制代码

作者: ksla    时间: 2017-2-17 15:41

回复 7# yu2n


    非常感谢!!
作者: ksla    时间: 2017-2-17 15:46

回复 2# CrLf


    谢谢你!!
作者: CrLf    时间: 2017-2-17 17:00

竟然两处笔误...已修改
作者: ksla    时间: 2017-2-17 17:02

回复 10# CrLf


    你好,,我在有偿求助区发帖子了。。能否再写一次,,我会给佣金的
作者: zz100001    时间: 2017-2-17 17:09

估计不会有人给你写了。。
作者: ksla    时间: 2017-2-17 17:27

回复 12# zz100001


    有吖,,好心人还是好多的!!
作者: 523066680    时间: 2017-2-17 17:32

本帖最后由 523066680 于 2017-2-17 17:45 编辑
  1. use Encode;
  2. open READ, "<:encoding(gbk)", "src.txt";
  3. my %hash;
  4. for my $e ( <READ> )
  5. {
  6.     $e=~s/\r?\n$//;
  7.     if ($e=~/(\d+)\p{han}(\d+)\p{han}(\d+)\p{han}(\d+)\p{han}(\d+)\p{han}(\d+)\p{han}/)
  8.     {
  9.         $t = sprintf("%d%02d%02d%02d%02d%02d", $1, $2, $3, $4, $5, $6 );
  10.         $hash{ $t } = $e;
  11.     }
  12. }
  13. close READ;
  14. grep { print encode('gbk', $hash{$_}),"\n" } ( sort keys %hash );
复制代码
假设时间不重复~  假设文本为GBK
作者: ksla    时间: 2017-2-17 18:44

回复 14# 523066680


    谢谢!!




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