Board logo

标题: [已结]去掉文本文档中相同的行 [打印本页]

作者: qinchun36     时间: 2008-7-22 17:24    标题: [已结]去掉文本文档中相同的行

文本文档 a.txt 里面有些行是完全相同的,
我想编个批处理把那些多余的相同的去掉,
  使得弄完以后所有的都不相同.

怎么办啊, 我试了下没办法, 象下面这样的:

for /f %%i in (a.txt) do echo %%i>>new.txt&set str=%%i&for /f %%j in (a.txt) do if %%j==%str% set %%j=nul

[ Last edited by HAT on 2008-10-30 at 23:23 ]
作者: fuuma     时间: 2008-7-23 16:05
@echo off
if exist new.txt del new.txt
sort/r<a.txt>temp.txt
setlocal enabledelayedexpansion
set cat=
set dog=
set/a cnt=-1
for /f %%i in (temp.txt) do (
set cat=!dog!
set dog=%%i
set/a cnt+=1
if not "!cat!" equ "" if !dog! neq !cat! (echo !cat! >>new.txt&set/a cnt=0)
)
if !dog! neq !cat! (echo !dog! >>new.txt) else (
echo !cat! >>new.txt)
if exist temp.txt del temp.txt
作者: qinchun36     时间: 2008-9-5 13:00


  Quote:
Originally posted by fuuma at 2008-7-23 04:05 PM:
@echo off
if exist new.txt del new.txt
sort/r<a.txt>temp.txt
setlocal enabledelayedexpansion
set cat=
set dog=
set/a cnt=-1
for /f %%i in (temp.txt) do (
set cat=!dog!
set dog=%%i
s ...

谢了啊 ,哈哈
作者: nanhezzb     时间: 2008-9-7 16:26
太复杂啊,可以考虑find命令。
作者: HAT     时间: 2008-9-7 18:08    标题: Re 4楼

是这个意思吗?
@echo off
type nul>b.txt
for /f "delims=" %%a in (a.txt) do (
  findstr /x /c:"%%a" b.txt 2>nul||echo %%a>>b.txt
)

作者: qinchun36     时间: 2008-10-30 23:14


  Quote:
Originally posted by HAT at 2008-9-7 06:08 PM:
是这个意思吗?
@echo off
type nul>b.txt
for /f "delims=" %%a in (a.txt) do (
  findstr /x /c:"%%a" b.txt 2>nul||echo %%a>>b.txt
)

真是这样啊!!

能解释下吗,太高深了看不懂

尤其是  。。。   2>nul||echo %%a>>b.txt    。。。

[ Last edited by qinchun36 on 2008-10-30 at 23:16 ]
作者: HAT     时间: 2008-10-30 23:23    标题: Re 6楼

教程里面有

  Quote:
批处理的教学
http://www.cn-dos.net/forum/viewthread.php?tid=2338

批处理最完整人性化教程
http://www.cn-dos.net/forum/viewthread.php?tid=18482

批处理新手FAQ整理
http://www.cn-dos.net/forum/viewthread.php?tid=34049

中国DOS联盟批处理室经典帖子合集
http://www.cn-dos.net/forum/viewthread.php?tid=31551