找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26998|回复: 8

[文本处理] 如何用批处理做到或其它方法做到?

[复制链接]
发表于 2012-4-8 16:16:48 | 显示全部楼层 |阅读模式
文本1.txt的内容是:
01 02 05 13 22 29 08
09 10 11 15 19 33 16
05 14 19 24 28 33 09
02 11 13 18 19 26 09
09 11 12 21 24 26 05
01 02 05 13 22 29 08
02 03 08 23 32 33 16
02 01 05 13 22 29 08
13 02 01 05 29 22 08
02 03 15 16 17 27 04
01 02 10 17 22 24 04
04 16 22 24 27 31 03
04 16 22 24 27 31 03
22 24 04 16 27 31 03
09 10 17 18 21 31 08
04 07 15 25 26 28 03
现在要删除如下行:
1、完全重复的行  2、前6个数按大小排列后一致,且最后两个数也一致的行。

如第一行为:01 02 05 13 22 29 08
则要删除如下行:第6行(完全一致),第8行和第9行。
发表于 2012-4-8 17:58:37 | 显示全部楼层
如果前6个数按大小排列后一致,最后两个数不一致,但是排列后一致,删吗?
发表于 2012-4-8 19:28:12 | 显示全部楼层
很想看看awk怎么写,,最近在学awk,,
发表于 2012-4-8 19:43:15 | 显示全部楼层
本帖最后由 fatcat 于 2012-4-8 19:45 编辑

回复 1# 1e3e


    可以简单的叙述为: 删除掉前 6 段组合和最后一段都重复出现的行(只留下该组合第 1 次出现的行), 这里组合是允许其中元素重复出现的, 任何一个元素在两个组合中的个数都相同, 就视两组合相同, 或者说组合重复出现.
 楼主| 发表于 2012-4-8 20:50:01 | 显示全部楼层
回复  1e3e


    可以简单的叙述为: 删除掉前 6 段组合和最后一段都重复出现的行(只留下该组合第 1 次 ...
fatcat 发表于 2012-4-8 19:43



    是的,还是你文采好
发表于 2012-4-8 21:04:58 | 显示全部楼层
回复 5# 1e3e


    你说最后两个数字,他说最后一段,到底是几啊?
发表于 2012-4-8 22:43:25 | 显示全部楼层
不知道行不行。
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "tokens=1-7 delims= " %%a in (a.txt) do (
  3.   set var=
  4.   for %%i in (%%a %%b %%c %%d %%e %%f) do set .%%i=1
  5.   for /f "delims==." %%i in ('set.') do set "var=!var!%%i"
  6.   if not defined !var!%%g (
  7.     echo %%a %%b %%c %%d %%e %%f %%g
  8.     set !var!%%g=1
  9.   )
  10.   for %%i in (%%a %%b %%c %%d %%e %%f) do set .%%i=
  11. ))>b.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
1e3e + 1 谢谢

查看全部评分

发表于 2012-4-14 20:33:11 | 显示全部楼层
回复 1# 1e3e
  1. @echo off & setlocal enabledelayedexpansion
  2. >2.txt (
  3.   for /f "delims=" %%h in (1.txt) do (
  4.     set "$=%%h" & set "$=!$:~,-3!" & set "$=!$: =&echo,!"
  5.     set "#="
  6.     for /f %%a in ('(echo !$!^)^| sort') do set "#=!#!%%a"
  7.     if not defined !#!!$:~-2! echo %%h&set "!#!!$:~-2!=1"
  8. ) )
  9. start "" 2.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
1e3e + 1 谢谢

查看全部评分

发表于 2012-4-15 17:05:10 | 显示全部楼层
太久没写过脚本了,手好生,写了好久。。。
  1. //Save me as takeline.js
  2. var arr,sr_arr,subarr,str,key,lastnum;
  3. var i,j,flag,outStr;
  4. var fso = new ActiveXObject("Scripting.FileSystemObject");
  5. var f = fso.OpenTextFile("d:\\test.txt",1,false);
  6. str = f.ReadAll();
  7. f.Close();

  8. arr = sr_arr = str.split('\n');

  9. for(i=0; i<arr.length; i++)
  10. {
  11.         subarr = arr[i].split(' ');
  12.         lastnum = subarr.pop();
  13.         subarr.sort().push(lastnum);
  14.         arr[i] = subarr;
  15. }

  16. outStr = '';
  17. for(i=0; i<arr.length; i++)
  18. {
  19.         flag = 1;
  20.         for(j=0; j<i; j++)
  21.         {
  22.                 if(arr[i].toString() == arr[j].toString())
  23.                 {
  24.                         flag = 0;
  25.                         break;
  26.                 }
  27.         }
  28.        
  29.         if(flag==1) outStr += sr_arr[i].toString().replace(/\,/g,' ');
  30. }

  31. f = fso.CreateTextFile("d:\\output.txt", true);
  32. f.Write(outStr);
  33. f.Close();

  34. fso = null;
  35. f = null;
  36. WScript.Echo('Succeed.');
复制代码

评分

参与人数 1技术 +1 收起 理由
1e3e + 1 谢谢

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 22:24 , Processed in 0.021286 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表