[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 【已解决】BAT批处理怎样删除含有重复的字符的行

本帖最后由 elec 于 2014-7-7 23:43 编辑

现有一个文本形如:
  1. az1   cz1   cd2
  2. cz2   csd4  sdf5
  3. sdf3   twe5   sdg5
  4. sffg5  rgg2   ewg3
  5. ...
复制代码
我用数字来标识单词的类型,如果为同一类型的就删除此行。谢谢!!
删除第一行和第三行。(第一行含有重复的数字1, 第3行含有重复的数字5)

本帖最后由 HappyBirthday 于 2014-5-14 18:46 编辑

写的代码不太好,不过应该能用
  1. setlocal enabledelayedexpansion
  2. for /f "tokens=*" %%i in (B:\a.txt) do (
  3. set dump=
  4. for %%a in (%%i) do (
  5. set tmp=%%a
  6. if not defined !tmp:~-1! (
  7. set !tmp:~-1!=1
  8. ) else (
  9. set dump=true
  10. )
  11. )
  12. for /l %%i in (0,1,9) do set %%i=
  13. if not !dump!==true echo %%i>>result.txt
  14. )
复制代码
1

评分人数

TOP

本帖最后由 CrLf 于 2014-5-15 00:32 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set /a 类型上限=20
  3. for /l %%a in (1 1 %类型上限%) do (
  4. set "pattern=!pattern! [^^0-9]%%a[^^0-9].*[^^0-9]%%a\>"
  5. )
  6. findstr /v "!pattern!" "a.txt" >"b.txt"
复制代码

TOP

回复 2# HappyBirthday


    可以解释原理吗?我是初学者哈

TOP

回复 3# CrLf


    代码虽然简洁,但是感觉没效果??

TOP

回复 5# elec


    findstr 的 \< \> 没有想象中的强大,代码已修改

TOP

回复 6# CrLf


    谢谢大侠~~但是如果我想要删除重复单词的行呢?
  1. asas qqqq ds fds fd qqqq
  2. hg dfg dsf sad ads
  3. aaa ds sdf aaa dsfgs qqq
  4. ad sad sdg hgf
复制代码
每个单词只能在同一行出现一次,如果有重复则删除此行。

例如:第一行重复qqqq,第三行重复aaa 。
  1. hg dfg dsf sad ads
  2. ad sad sdg hgf
复制代码

TOP

你好,我想问下。怎么安装sed及gawk?我将你提供的链接下载好了sed.exe gawk.exe。双击它算安装好了吗?可是在DOS界面还是调用不了grep...提示grep是不是内部命令。。我在win7 32位 和 XP 上Ju均试过无效。。请求帮忙~~

不需要安装
把exe文件放到C:\Windows\system32文件夹下面就行了

下载地址:
http://code.google.com/p/gnu-on-windows/downloads/list

TOP

返回列表