标题: [文本处理] [已解决]求助批处理相同行删除,不同行只保留一个 [打印本页]
作者: jrx401 时间: 2019-10-10 18:27 标题: [已解决]求助批处理相同行删除,不同行只保留一个
本帖最后由 jrx401 于 2019-10-22 11:30 编辑
详细如下;
a.txt内容;
11111
11111
11112
A1111
11111
CCCCC
11111
a.txt处理后;
11111
11112
A1111
CCCCC
如下code是可以处理,但是A.txt里面有几千行时,就非常耗时。
可否有快速处理的方法呢?
使用的code;- setlocal enabledelayedexpansion
- set n=0
- for /f %%a in (A.txt) do (
- set /a n=!n!+1
- set m=0
- set write=1
- for /f %%b in (A.txt) do (
- set /a m=!m!+1
- if !m! lss !n! (
- if %%a == %%b ( set write=0 )
- )
- )
- if !write! equ 1 echo %%a >> result.txt
- )
复制代码
感谢各位大虾
作者: ivor 时间: 2019-10-10 19:40
- powershell "(gc 'a.txt' | sort -Unique) | Out-File a.txt"
复制代码
作者: Batcher 时间: 2019-10-10 21:32
- gawk "!a[$0]++" "a.txt" > "b.txt"
复制代码
推荐试试第三方命令行工具 gawk 处理速度比较快
http://bcn.bathome.net/s/tool/index.html?key=gawk
作者: jrx401 时间: 2019-10-12 18:02
回复 2# ivor
感谢大侠回复。
使用Powershell 就无法把bat 转成exe档。
可否有好的方法转档成exe呢?
衷心感谢
作者: jrx401 时间: 2019-10-12 18:03
回复 3# Batcher
感谢大侠回复。
不是很会用,使用gewk后的bat 可否也可以转成 exe呢?
衷心感谢
作者: jrx401 时间: 2019-10-12 18:06
感谢两位回复。
一直想办法使用bat来写看看,
发现改成如下,就变得比较快了
for /f "tokens=1,2 delims= " %%c in (A.txt) do (
findstr /c:"%%c" B.txt>nul||echo %%c>>B.txt
)
pause
作者: Batcher 时间: 2019-10-12 18:18
回复 6# jrx401
这样应该可以再快点- (for /f "tokens=1,2 delims= " %%c in (A.txt) do (
- findstr /c:"%%c" B.txt>nul||echo %%c
- ))>B.txt
复制代码
作者: terse 时间: 2019-10-13 21:19
文件不是很大的话 这样提高点效率- @echo off&SetLocal EnableDelayedExpansion
- (for /f "delims=" %%a in (a.txt) do (
- if "!%%a!"=="" (
- echo %%a
- set %%a=0
- )
- ))>b.txt
- pause
复制代码
作者: jrx401 时间: 2019-10-22 11:26
回复 7# Batcher
感谢大虾。
比我的快 5s 。
四千行的数据
万分感激
作者: jrx401 时间: 2019-10-22 11:28
回复 8# terse
高手!!!
秒杀[四千行,1s 结束]
不是很理解,为什么可以这样快。
万分感激
作者: wxyz0001 时间: 2019-10-25 12:53
本帖最后由 wxyz0001 于 2019-10-25 18:20 编辑
回复 1# jrx401
答案很浅显易懂
不过程序似乎多用了些废功夫,第二个for中,当 if %%a == %%b ( set write=0 )这个条件满足时,好像没有设置跳出循环,你们说是不是多走了些无用功
作者: wxyz0001 时间: 2019-10-25 12:56
回复 8# terse
代码短,也很精辟,赞
作者: xczxczxcz 时间: 2019-10-26 16:20
4000行 1S ?那 22000000多行 4s内完成 又如何?
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |