Board logo

标题: [文本处理] 如何用批处理做到或其它方法做到? [打印本页]

作者: 1e3e    时间: 2012-4-8 16:16     标题: 如何用批处理做到或其它方法做到?

文本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行。
作者: gawk    时间: 2012-4-8 17:58

如果前6个数按大小排列后一致,最后两个数不一致,但是排列后一致,删吗?
作者: JooKin    时间: 2012-4-8 19:28

很想看看awk怎么写,,最近在学awk,,
作者: fatcat    时间: 2012-4-8 19:43

本帖最后由 fatcat 于 2012-4-8 19:45 编辑

回复 1# 1e3e


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

回复  1e3e


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



    是的,还是你文采好
作者: gawk    时间: 2012-4-8 21:04

回复 5# 1e3e


    你说最后两个数字,他说最后一段,到底是几啊?
作者: apang    时间: 2012-4-8 22:43

不知道行不行。
  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
复制代码

作者: fatcat    时间: 2012-4-14 20:33

回复 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
复制代码

作者: broly    时间: 2012-4-15 17:05

太久没写过脚本了,手好生,写了好久。。。
  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. if(flag==1) outStr += sr_arr[i].toString().replace(/\,/g,' ');
  29. }
  30. f = fso.CreateTextFile("d:\\output.txt", true);
  31. f.Write(outStr);
  32. f.Close();
  33. fso = null;
  34. f = null;
  35. WScript.Echo('Succeed.');
复制代码





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