标题: [文本处理] 批处理删除以指定字符串开头的行或以指定字符串结尾的行 [打印本页]
作者: laboo 时间: 2012-2-10 13:16 标题: 批处理删除以指定字符串开头的行或以指定字符串结尾的行
本帖最后由 pcl_test 于 2016-8-11 20:21 编辑
1.批处理删除含ao ban开头的行
2批处理删除含ve lo结尾的行(不含.cn)
希望是分别两个语句。数据有400多k,3万多条
annun.cn
aolve.cn
aopian.cn
aorua.cn
aotei.cn
azhua.cn
bailo.cn
bairua.cn
balve.cn
banlve.cn
bannve.cn
处理后:
annun.cn
azhua.cn
bairua.cn
应该是这样。
作者: ivor 时间: 2012-2-10 13:53
本帖最后由 ivor 于 2012-2-10 16:17 编辑
运行环境:假定你的每行后缀是.cn
支持同时指定多个关键字,需要以(空格、逗号或者等号)分开- @echo off
-
- set /p beginword=请输入开头的关键字
- set /p endword=请输入结束的关键字
- set /p file=请输入文件名
-
- if defined beginword call :Begin
- if defined endword call :End
- pause & exit
- :Begin
- for %%a in (%beginword%) do (
- findstr /v "^%%a" %file%>Temp
- move Temp %file%
- )
-
- goto :EOF
- :End
- for %%a in (%endword%) do (
- findstr /v "%%a.cn$" %file% >Temp
- move Temp %file%
- )
- goto :EOF
复制代码
作者: laboo 时间: 2012-2-10 14:54
本帖最后由 laboo 于 2012-2-10 15:03 编辑
ivor 兄弟,运行后,不行
或者看.cn麻烦,可以把.cn呼略掉有没办法?
作者: ivor 时间: 2012-2-10 15:52
本帖最后由 ivor 于 2012-2-10 16:45 编辑
可以啊,但是用for遍历肯定性能下降很多,一会修改一下
===============================
效率比较低- @echo off
-
- set /p beginword=请输入开头的关键字
- set /p endword=请输入结束的关键字
- set /p file=请输入文件名
-
- if defined beginword call :Begin
- if defined endword call :End
- pause & exit
- :Begin
- for %%a in (%beginword%) do (
- findstr /v "^%%a" %file%>Temp
- move Temp %file%
- )
-
- goto :EOF
- :End
- for %%a in (%endword%) do (
- for /f %%b in (%file%) do (
- echo %%~nb | findstr /v "%%a\>" && echo %%b>>Temp
- )
- move Temp %file%
- )
- goto :EOF
复制代码
作者: lvsehuaxue 时间: 2012-2-10 16:56
- @echo off
- (findstr /v "^ao ^ban ve.cn$ lo.cn$" a.txt)>$
- move $ a.txt
复制代码
作者: ivor 时间: 2012-2-10 17:01
lvsehuaxue 发表于 2012-2-10 16:56
学习了,正则表达式
作者: laboo 时间: 2012-2-10 17:21
多谢楼上两位兄弟,可以用,嘿嘿
作者: find 时间: 2012-2-10 23:38
回复 6# ivor
http://www.bathome.net/thread-24-1-1.html
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |