标题: [文本处理] 如何用批处理做到或其它方法做到? [打印本页]
作者: 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
不知道行不行。- @echo off&setlocal enabledelayedexpansion
- (for /f "tokens=1-7 delims= " %%a in (a.txt) do (
- set var=
- for %%i in (%%a %%b %%c %%d %%e %%f) do set .%%i=1
- for /f "delims==." %%i in ('set.') do set "var=!var!%%i"
- if not defined !var!%%g (
- echo %%a %%b %%c %%d %%e %%f %%g
- set !var!%%g=1
- )
- for %%i in (%%a %%b %%c %%d %%e %%f) do set .%%i=
- ))>b.txt
复制代码
作者: fatcat 时间: 2012-4-14 20:33
回复 1# 1e3e - @echo off & setlocal enabledelayedexpansion
- >2.txt (
- for /f "delims=" %%h in (1.txt) do (
- set "$=%%h" & set "$=!$:~,-3!" & set "$=!$: =&echo,!"
- set "#="
- for /f %%a in ('(echo !$!^)^| sort') do set "#=!#!%%a"
- if not defined !#!!$:~-2! echo %%h&set "!#!!$:~-2!=1"
- ) )
- start "" 2.txt
复制代码
作者: broly 时间: 2012-4-15 17:05
太久没写过脚本了,手好生,写了好久。。。- //Save me as takeline.js
- var arr,sr_arr,subarr,str,key,lastnum;
- var i,j,flag,outStr;
- var fso = new ActiveXObject("Scripting.FileSystemObject");
- var f = fso.OpenTextFile("d:\\test.txt",1,false);
- str = f.ReadAll();
- f.Close();
-
- arr = sr_arr = str.split('\n');
-
- for(i=0; i<arr.length; i++)
- {
- subarr = arr[i].split(' ');
- lastnum = subarr.pop();
- subarr.sort().push(lastnum);
- arr[i] = subarr;
- }
-
- outStr = '';
- for(i=0; i<arr.length; i++)
- {
- flag = 1;
- for(j=0; j<i; j++)
- {
- if(arr[i].toString() == arr[j].toString())
- {
- flag = 0;
- break;
- }
- }
-
- if(flag==1) outStr += sr_arr[i].toString().replace(/\,/g,' ');
- }
-
- f = fso.CreateTextFile("d:\\output.txt", true);
- f.Write(outStr);
- f.Close();
-
- fso = null;
- f = null;
- WScript.Echo('Succeed.');
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |