标题: [文本处理] [已解决]批处理如何快速过滤重复行? [打印本页]
作者: 狗屁不通 时间: 2012-8-20 13:05 标题: [已解决]批处理如何快速过滤重复行?
- for /f "delims=" %%i in (a.txt) do (
- if not defined %%i set %%i=A & echo %%i>>aa.txt)
复制代码
这个a.txt有100多万行,持续过滤几个小时了,还在继续
超、超、超……慢啊!
怎么快速过滤重复行,有没有更快的代码?
作者: 冷玉公子 时间: 2012-8-20 13:42
- (for /f "delims=" %%i in (a.txt) do (
- if not defined %%i set %%i=A
- echo %%i
- ))>>aa.txt
复制代码
这样可能会快一点,100多万行也确实太大了。
干什么呢把文件搞这么大?
作者: 狗屁不通 时间: 2012-8-20 13:58
。。。第三方也行,但要有精度和速度。。。
作者: canyuexiaolang 时间: 2012-8-20 14:25
- (for /f "delims=" %%i in (a.txt) do (
- if not defined %%i set %%i=A
- echo.%%i
- ))>>aa.txt
复制代码
还能快一点点..
作者: 乱码 时间: 2012-8-20 15:15
- Const adOpenStatic = 3
- Const adLockOptimistic = 3
- Const adCmdText = &H0001
- Set objConnection = CreateObject("ADODB.Connection")
- Set objRecordSet = CreateObject("ADODB.Recordset")
-
- strPathToTextFile = "C:\"
- strFile = "test.txt"
-
- objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
- "Data Source=" & strPathtoTextFile & ";" & _
- "Extended Properties=""text;HDR=NO;FMT=Delimited"""
-
- objRecordSet.Open "Select DISTINCT * FROM " & strFile, _
- objConnection, adOpenStatic, adLockOptimistic, adCmdText
-
- Do Until objRecordSet.EOF
- WScript.Echo objRecordSet.Fields.Item(0).Value
- objRecordSet.MoveNext
- Loop
- objRecordSet.Close
复制代码
网上找的代码,VBS的,通过 ADODB 应该会和谐点吧、、
作者: poter 时间: 2012-8-20 15:21
楼主试试这个? findstr的查询速度应该是最快的- @ECHO OFF
- Setlocal enableDelayedExpansion
- for /f "tokens=*" %%i in (a.txt) do (
- for /f "tokens=*" %%j in ('findstr "%%i" a.txt')
- set /a a+=1
- if !a! geq 2 echo %%i>>aa.txt
- )
复制代码
作者: 狗屁不通 时间: 2012-8-20 18:45
谢谢各位热情的帮助,我去研究研究VBS了。。。
批处理除了速度慢,其他都非常的好。。。
作者: CrLf 时间: 2012-8-20 18:58
本帖最后由 CrLf 于 2012-8-20 19:37 编辑
- @echo off
- sort test.txt /o tmp.txt
- for /f "delims=" %%a in (tmp.txt) do (
- set "str=%%a"
- setlocal enabledelayedexpansion
- if not !str!==!last! echo %%a
- endlocal
- set "last=%%a"
- )
复制代码
gawk:- gawk "{a[$0]++}END{for(i in a)print i}" c:\test.txt
复制代码
修改自:http://bbs.bathome.net/redirect. ... 5&fromuid=30406
如果要按出现的顺序输出则是:- gawk "{a[$0]++;if(a[$0]==1)print $0}" c:\test.txt
复制代码
作者: forfiles 时间: 2012-8-21 10:53
回复 7# 狗屁不通
试试8楼的gawk吧,可能比VBS快。
作者: forfiles 时间: 2012-8-21 10:54
回复 2# 冷玉公子
在实际工作中,几千万行的都经常遇到。
作者: 狗屁不通 时间: 2012-8-21 11:34
本帖最后由 狗屁不通 于 2012-8-21 12:29 编辑
回复 8# CrLf
非常感谢^_^ gawk只用了不到5秒! 飞快啊!哈哈
作者: eddf 时间: 2012-8-27 10:13
怎样用点阵列数字样本显示当前的系统时间,请教高手解答,用批处理实现。以下是点阵列数字样本的批处理文本。
——————————————————————————————————————————————————————————————————————————————————————————
@echo off
cls
echo.
rem 根据黄金分割比,此程序的每个数字的宽乘以高为10×16个点阵列。
color 0E
echo.
echo.
echo.
echo.
echo. ██████████
echo. ██████████
echo. ██████████
echo. ██████████
echo. ██████████
echo. ██████████
echo. ██████████
echo. ██████████
echo. ██████████
echo. ██████████
echo. ██████████
echo. ██████████
echo. ██████████
echo. ██████████
echo. ██████████
echo. ██████████
echo.
echo.
echo.
echo.
echo. ██████████
echo. ██████████
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██████████
echo. ██████████
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██████████
echo. ██████████
echo.
echo.
echo.
echo.
echo. ████
echo. ████
echo. ████
echo. ████
echo.
echo.
echo.
echo. ████
echo. ████
echo. ████
echo. ████
echo.
echo.
echo.
echo.
echo. ██████████
echo. ██████████
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██████████
echo. ██████████
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██████████
echo. ██████████
echo.
echo.
echo.
echo.
echo. ██████████
echo. ██████████
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo. ██████████
echo. ██████████
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██████████
echo. ██████████
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██████████
echo. ██████████
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo. ██████████
echo. ██████████
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██████████
echo. ██████████
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██████████
echo. ██████████
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██████████
echo. ██████████
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo. ██████████
echo. ██████████
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██████████
echo. ██████████
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██████████
echo. ██████████
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo. ██████████
echo. ██████████
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██████████
echo. ██████████
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██████████
echo. ██████████
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo. ██
echo. ███
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ██
echo. ████
echo. ████
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo. ██████████
echo. ██████████
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██ ██
echo. ██████████
echo. ██████████
echo.
echo.
echo.
echo.
pause
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |