[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 WHY 于 2020-6-12 16:38 编辑
  1. $d = get-Date;
  2. $arr = [IO.File]::ReadAllLines('3.txt', [Text.Encoding]::UTF8) -match '-{4}';
  3. $Len = $arr.Count;
  4. $dic = New-Object 'System.Collections.Generic.Dictionary[string, [Collections.ArrayList]]';
  5. $max = 0;
  6. for($i=0; $i -lt $Len; $i++) {
  7.     $a = $arr[$i].Trim() -split('----');
  8.     if( !$dic.ContainsKey($a[0]) ){
  9.         $dic.Add($a[0], @($a[1]));    #用户名加入到字典,密码加入到数组
  10.     } else {
  11.         [void]$dic[$a[0]].Add($a[1]);
  12.     }
  13. }
  14. forEach($key In $dic.Keys) {         #找长度最大的数组
  15.     if($dic[$key].Count -gt $max){ $max = $dic[$key].Count; }
  16. }
  17. $out = for($i=0; $i -lt $max; $i+=3) {
  18.     forEach($key In $dic.Keys) {
  19.         for($j=0; $j -lt 3; $j++) {
  20.             if($dic[$key].Count -gt $i+$j) {
  21.                 $key + '----' + $dic[$key][$i+$j];
  22.             } else { break; }
  23.         }
  24.     }
  25. }
  26. [IO.File]::WriteAllLines('22.txt', $out);
  27. ((get-Date) - $d).TotalSeconds
  28. pause
复制代码
2.6404314
按 Enter 键继续...:
563024 行,速度不算快,也不算太慢
  1. @echo off
  2. chcp 65001 > nul
  3. gawk -F"-{3,}" "BEGIN{max=0}{if($1!=s){i++;j=1};a[i][j++]=$0;s=$1;if(j>max)max=j}END{for(n=1;n<max;n+=3)for(i in a)for(j=0;j<3;j++)if(a[i][n+j])print a[i][n+j]}" 3.txt > 22.txt
  4. pause
复制代码
1

评分人数

TOP

返回列表