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

[文本处理] 批处理删除以指定字符串开头的行或以指定字符串结尾的行

本帖最后由 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 16:17 编辑

运行环境:假定你的每行后缀是.cn
支持同时指定多个关键字,需要以(空格、逗号或者等号)分开
  1. @echo off
  2. set /p beginword=请输入开头的关键字
  3. set /p endword=请输入结束的关键字
  4. set /p file=请输入文件名
  5. if defined beginword call :Begin
  6. if defined endword call :End
  7. pause & exit
  8. :Begin
  9. for %%a in (%beginword%) do (
  10. findstr /v "^%%a" %file%>Temp
  11. move Temp %file%
  12. )
  13. goto :EOF
  14. :End
  15. for %%a in (%endword%) do (
  16. findstr /v "%%a.cn$" %file% >Temp
  17. move Temp %file%
  18. )
  19. goto :EOF
复制代码

TOP

本帖最后由 laboo 于 2012-2-10 15:03 编辑

ivor 兄弟,运行后,不行

或者看.cn麻烦,可以把.cn呼略掉有没办法?

TOP

本帖最后由 ivor 于 2012-2-10 16:45 编辑

可以啊,但是用for遍历肯定性能下降很多,一会修改一下

===============================

效率比较低
  1. @echo off
  2. set /p beginword=请输入开头的关键字
  3. set /p endword=请输入结束的关键字
  4. set /p file=请输入文件名
  5. if defined beginword call :Begin
  6. if defined endword call :End
  7. pause & exit
  8. :Begin
  9. for %%a in (%beginword%) do (
  10.         findstr /v "^%%a" %file%>Temp
  11.         move Temp %file%
  12. )
  13. goto :EOF
  14. :End
  15. for %%a in (%endword%) do (
  16. for /f %%b in (%file%) do (
  17. echo %%~nb | findstr /v "%%a\>" && echo %%b>>Temp
  18. )
  19. move Temp %file%
  20. )
  21. goto :EOF
复制代码

TOP

  1. @echo off
  2. (findstr /v "^ao ^ban ve.cn$ lo.cn$" a.txt)>$
  3. move $ a.txt
复制代码

TOP

lvsehuaxue 发表于 2012-2-10 16:56



    学习了,正则表达式

TOP

多谢楼上两位兄弟,可以用,嘿嘿

TOP

TOP

返回列表