标题: [文本处理] [己解决]批处理如何把重复行写入b.txt? [打印本页]
作者: keshun 时间: 2013-6-26 14:23 标题: [己解决]批处理如何把重复行写入b.txt?
本帖最后由 keshun 于 2013-6-26 20:12 编辑
批处理对a.txt进行处理,重复行(字母大小写不同也算重复行)写入b.txt,求代码,谢谢!!
a.txt内容如下:
bindmac=bc-ae-c5-8e-7c-4c
bindmac=00-e0-4c-3b-02-a3
bindmac=00-E0-4C-27-58-C1
bindmac=b8-70-f4-22-22-bb
bindmac=c8-0a-a9-8f-0b-e7
bindmac=dc-0e-a1-d3-d9-72
bindmac=1c-fa-68-90-7e-4b
bindmac=00-16-17-9a-94-2a
bindmac=00-30-18-a2-f7-3a
bindmac=e8-9a-8f-25-08-59
bindmac=00-e0-4c-29-13-82
bindmac=00-e0-4c-27-58-c1
bindmac=00-30-18-af-8b-e8
bindmac=00-30-18-a2-f7-3a
bindmac=f4-6d-04-11-b8-bb
bindmac=b8-88-e3-72-aa-a3
bindmac=00-e0-4c-27-58-c1
bindmac=00-E0-66-80-F1-F8
bindmac=00-e0-61-14-23-2d
bindmac=00-e0-b0-fb-b2-41
bindmac=b8-70-f4-39-9e-a3
b.txt内容(排序随意)如下:
bindmac=00-30-18-a2-f7-3a
bindmac=00-30-18-a2-f7-3a
bindmac=00-E0-4C-27-58-C1
bindmac=00-e0-4c-27-58-c1
bindmac=00-e0-4c-27-58-c1
作者: terse 时间: 2013-6-26 15:15
- @echo off&setlocal enabledelayedexpansion
- set n=0
- (
- for /f "delims=" %%i in ('sort a.txt') do (
- if defined str (
- if /i "!str!" neq "%%i" (
- if !n! gtr 1 for /l %%j in (1 1 !n!) do echo !str!
- set str=%%i
- set n=0
- )
- ) else set str=%%i
- set /a n+=1
- )
- if !n! gtr 1 for /l %%j in (1 1 !n!) do echo !str!
- )>b.txt
复制代码
作者: keshun 时间: 2013-6-26 15:57
回复 2# terse
谢谢!!我测试后是这样。
b.txt内容如下:
bindmac=00-e0-4c-27-58-c1
bindmac=00-e0-4c-27-58-c1
作者: xxpinqz 时间: 2013-6-26 18:49
本帖最后由 xxpinqz 于 2013-6-26 18:51 编辑
- @echo off&setlocal enabledelayedexpansion
- (for /f "delims= " %%a in ('sort a.txt') do (
- set "str2=!str1!"
- set "str1=%%a"
- if /i "!str1!"=="!str2!" (
- set .=.
- echo,!str2!
- ) else (
- if defined . (
- set .=
- echo,!str2!
- )
- )
- ))>b.txt
复制代码
2楼分割符要改为空格"delims= "
作者: terse 时间: 2013-6-26 19:21
回复 3# keshun
应该行尾空格问题 解决办法:
将代码中所有%%i 替换为 %%~nxi 或者 去掉代码中 "delims="
Re:
xxpinqz 开始COPY 一楼样本是 删除行尾空格测试的 以为是论坛原因
其实 空格 就是默认分隔符 所以也没必要再去指定
作者: xxpinqz 时间: 2013-6-27 14:25
回复 5# terse
这倒是~~
不过还是去掉delims=好,你上次不是测出来%%~nx这样扩展效率低于用分割符
作者: terse 时间: 2013-6-27 17:42
回复 6# xxpinqz
嗯 我是给楼主修正代码的二条建议
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |