Board logo

标题: [文本处理] 批处理如何删除文本中以指定字符分割成的两个字段/列相同的行 [打印本页]

作者: necnec1    时间: 2014-5-4 15:46     标题: 批处理如何删除文本中以指定字符分割成的两个字段/列相同的行

本帖最后由 pcl_test 于 2016-11-11 19:10 编辑

批处理BAT如何删除重复文本?
ABCD-----ABCD
ACDE----ACDEAF
CGHC----ABCGHC

上面这3组 左边跟右边完全 一模一样的  删除   
左边跟右边不一样的就保留
第一组删除  留下二三组

请会的朋友帮忙 谢谢!
作者: cjiabing    时间: 2014-5-4 17:00

for /f "tokens=1,2 delims=——" %%a in (1.txt) do if /i "%%a"=="%%b" echo %%a
作者: DAIC    时间: 2014-5-4 19:52

  1. @echo off
  2. (for /f "tokens=1,2 delims=-" %%a in (1.txt) do (
  3.     if "%%a" neq "%%b" (
  4.         echo %%a----%%b
  5.     )
  6. ))>2.txt
复制代码

作者: necnec1    时间: 2014-5-5 00:09

回复 2# cjiabing
貌似无法保存 BAT一闪就没了
作者: necnec1    时间: 2014-5-5 00:11

回复 3# DAIC
批处理的结果都变样了 很长的一段文本被分割成一半 不知道怎么了
作者: DAIC    时间: 2014-5-5 17:12

回复 5# necnec1


    把你的原始文件压缩之后传上来我试试
作者: necnec1    时间: 2014-5-6 19:48

回复 6# DAIC


FEC(TT)03-2998 E-CC(TT)22-3001-75CE359CC-----FEC(TT)03-2998 E-CC(TT)22-3001-75CE359CC
FEC(TT)03-2998 E-CC(TT)22-3551-22CE359CC-----ECFEC(TT)03-2998 E-CC(TT)22-3551-22CE359CC

就是这2组文本 你保存为文本文件就行了
作者: CrLf    时间: 2014-5-6 20:36

借三楼代码小改一下就行了:
  1. @echo off
  2. (for /f "delims=" %%a in (1.txt) do (
  3.     set "str=%%a"
  4.     setlocal enabledelayedexpansion
  5.     if "!str:*-----=!!str:*-----=-----!" neq "!str!" echo !str!
  6.     endlocal
  7. ))>2.txt
复制代码

作者: blueskyczg    时间: 2014-5-8 17:10

本帖最后由 blueskyczg 于 2014-5-8 17:11 编辑

回复 8# CrLf
"!str:*-----=!!str:*-----=-----!"
能不能rem下,没看懂,望指教!
作者: CrLf    时间: 2014-5-8 17:37

!str:*-----=!
是把 ACDE----ACDEAF 替换成 ACDEAF
!str:*-----=-----!
是把 ACDE----ACDEAF 替换成 -----ACDEAF

所以
  1. if "!str:*-----=!!str:*-----=-----!" neq "!str!"
复制代码
相当于
  1. if "ACDEAF----ACDEAF" neq "ACDE----ACDEAF"
复制代码
其实写成这样可能更容易看懂
  1. if "!str:*-----=!-----!str:*-----=!" neq "!str!"
复制代码

作者: DAIC    时间: 2014-5-9 08:24

回复 7# necnec1


    顶楼就应该给出这种格式的数据,而不是瞎编数据。




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