Board logo

标题: [文本处理] [已解决]批处理如何删除多个文本中的以指定字符串开头的行? [打印本页]

作者: CZT    时间: 2009-6-26 21:19     标题: [已解决]批处理如何删除多个文本中的以指定字符串开头的行?

本帖最后由 pcl_test 于 2016-10-9 21:34 编辑

我这里有一批文件需要用批处理删除文本文件中指定的内容,请论坛里的前辈帮忙看看好吗?

有如下文件很多

E10锣顶2MM开粗.mac
E10外形开粗(挖槽).mac
R3光顶(曲面).mac
  1. IMPORT TEMPLATE PROJECT FILEOPEN "D:\dcam\AUTOPMILL6.0\TOOL.ptf"
  2. ACTIVATE TOOL "E10(开粗)"
  3. FORM BLOCK
  4. EDIT BLOCKTYPE LIMITS
  5. EDIT BLOCK ALL UNLOCK
  6. EDIT BLOCK RESETLIMIT 1
  7. EDIT BLOCK RESET
  8. EDIT BLOCK ZMAX @{ZMAX}+0.5@
  9. EDIT BLOCK ZMIN @{ZMAX}+0.12@
  10. EDIT BLOCK ALL UNLOCK
  11. BLOCK ACCEPT
  12. FORM FEEDRATE
  13. EDIT RSPEED 30000
  14. EDIT PRATE 1000
  15. EDIT FRATE 2000
  16. EDIT RPM 2000
  17. FEEDRATE ACCEPT
  18. FORM TOOLAXIS
  19. EDIT TOOLAXIS TYPE VERTICAL
  20. TOOLAXIS ACCEPT
  21. IMPORT TEMPLATE ENTITY TOOLPATH "Favourites\Offset-AreaClear-Model.ptf" FORM TOOLPATH
  22. EDIT RTOLERANCE 0.05
  23. FORM THICKNESS ROUGHING
  24. EDIT RTHICKNESS AXIAL_RADIAL ON
  25. EDIT RTHICKNESS @{THK}+0.45@
  26. EDIT RTHICKNESS AXIAL 0.07
  27. THICKNESS ACCEPT
  28. EDIT OVER 6.5
  29. EDIT ZHEIGHTS AUTOMATIC ON
  30. EDIT ZHEIGHTS AUTOMATIC STEPDOWN 0.8
  31. EDIT ACUTDIR ANY
  32. ACTIVATE BOUNDARY " "
  33. EDIT FINALPROFILEPASS OFF
  34. EDIT AREAFILTER ON
  35. EDIT AREAFILTERVALUE 0.5
  36. EDIT LMOVES RAMP
  37. SET OUTSIDE
  38. EDIT SLICEARCFIT ON
  39. EDIT SMOOTHLINKS OFF
  40. EDIT AREACLEAROFFSET SMOOTHING ON
  41. EDIT AREACLEAROFFSET SMOOTHINGALLOWANCE 13
  42. EDIT AREACLEAR REFERENCE ENABLED OFF
  43. EDIT OFFSETDIRECTION OUTSIDEIN
  44. SET AREACLEAREXPERT
  45. EDIT ALLOWTOOLOUTSIDEBLOCK OFF
  46. UNSET AREACLEAREXPERT
  47. EDIT TOOLPATH ; CALCULATE
  48. AREACLEAR CANCEL
  49. FORM LEADLINK
  50. EDIT TOOLPATH LEADS PAGE ZHEIGHTS
  51. EDIT TOOLPATH LEADS SKIMDIST 4
  52. EDIT TOOLPATH LEADS PLUNGEDIST 2
  53. EDIT TOOLPATH LEADS INCREMENT_FROM_STOCK Y
  54. EDIT TOOLPATH LEADS GOUGECHECK Y
  55. EDIT TOOLPATH LEADS PAGE LEADIN
  56. EDIT TOOLPATH LEADS LEADIN RAMP
  57. FORM PMLLEADINRAMP
  58. EDIT TOOLPATH LEADS LEADIN RAMPOPT HEIGHT_INCREMENT 0.6
  59. EDIT TOOLPATH LEADS LEADIN RAMPOPT ZIGANGLE 2
  60. EDIT TOOLPATH LEADS LEADIN RAMPOPT FINITELENGTH N
  61. LEADINRAMP ACCEPT
  62. EDIT TOOLPATH LEADS MOVESTARTPOINTS Y
  63. EDIT TOOLPATH LEADS LEADSONSHORTLINKS Y
  64. EDIT TOOLPATH LEADS LEADIN2 NONE
  65. EDIT TOOLPATH LEADS PAGE LEADSOUT
  66. EDIT TOOLPATH LEADS LEADOUT NONE
  67. EDIT TOOLPATH LEADS LEADOUT2 NONE
  68. EDIT TOOLPATH LEADS PAGE LEADIN
  69. EDIT TOOLPATH LEADS PAGE LEADEXTENSIONS
  70. EDIT TOOLPATH LEADS EXTIN NONE
  71. EDIT TOOLPATH LEADS EXTOUT NONE
  72. EDIT TOOLPATH LEADS PAGE LINK
  73. EDIT TOOLPATH LEADS LINK SKIM
  74. EDIT TOOLPATH LEADS LONGLINK SKIM
  75. EDIT TOOLPATH LEADS SAFELINK SAFEZ
  76. EDIT TOOLPATH LEADS LINK THRESHOLD 20
  77. PROCESS TPLEADS
  78. LEADS ACCEPT
  79. FORM TOOLZHEIGHTS
  80. EDIT SAFZ RESET EDIT STAZ RESET
  81. EDIT SAFZ @{ZMAX}+10@
  82. EDIT STAZ @{ZMAX}+2@
  83. EDIT RMOVES SKIM
  84. EDIT ISAFZ 3
  85. EDIT ISTAZ 1
  86. RESET TOOLPATH RAPID
  87. TOOLZHEIGHTS ACCEPT
  88. FORM DATUM
  89. EDIT DATUM AUTOMATIC
  90. EDIT DATUM FIRST_SAFZ
  91. EDIT DATUM DISTANCE @{ZMAX}+10@
  92. DATUM ACCEPT
  93. DELETE LEVEL ALL
复制代码
如上,现要把文件中所有以“FORM 开头到行尾的部分删除” 如果 “FORM”前有内容则前面的内容不能删除。
上面的代码红色部分。但其它部分和原格式保持不变
请教各位大哥大姐想想办法。
我本来用到第三方命令行工具用下面的代码,但他把FORM以前的内容也删除了
sed "/FORM/d" 1.mac>a.mac

[ 本帖最后由 CZT 于 2009-7-10 21:25 编辑 ]
作者: CZT    时间: 2009-6-26 21:24

代码不能涂颜色啊
不好意思
就是上面的
FORM BLOCK
FORM FEEDRATE
FORM TOOLAXIS
FORM THICKNESS ROUGHING
FORM LEADLINK
FORM PMLLEADINRAMP
FORM TOOLZHEIGHTS
FORM DATUM
这些内容
下面这句删除FORM后面的内容
IMPORT TEMPLATE ENTITY TOOLPATH "Favourites\Offset-AreaClear-Model.ptf" FORM TOOLPATH
删除后为
IMPORT TEMPLATE ENTITY TOOLPATH "Favourites\Offset-AreaClear-Model.ptf"
作者: Batcher    时间: 2009-6-27 01:05

  1. sed -i -e "/^FORM/d" -e "s/FORM.*//g" a.txt
复制代码
第三方命令行工具 sed.exe 下载地址:
http://bbs.bathome.net/thread-1114-1-1.html
作者: CZT    时间: 2009-6-27 19:48

首先多谢Batcher  兄上面的代码
它已经完美的处理好单个的我需要修改的文件,
但现在的问题是我现有很多个这样的文件需要做
这样的更改,想再请教一下怎样才能让批处理处理
一个文件夹内的所有这样的.MAC文件而又保持原来的
文件名呢?

下面的是我自己写的代码
  1. setlocal enabledelayedexpansion
  2. for %%m in (*.mac) do (
  3. for %%i in (%%m) do set "%%i=%~nx%%a"
  4. for  %%a in (%%m) do (
  5. sed -i -e "/^FORM/d" -e "s/FORM.*//g" & ren sedDOSSUX !%~nx%%a!
  6. )
  7. )
  8. pause
复制代码
我知道还有很多方面的语法错误,但我已经尽了最大的努力却只能做成这个样子了,还要请论坛里的兄弟门帮忙写一段这样的代码好吗?

代码功能:删除同文件夹内所有以.mac为扩展名的文本文件中的以“FORM”开头的行 如:
FORM THICKNESS ROUGHING
FORM FEEDRATE
及不是以“FORM”开头但这一行中有“FORM”字符的需要删除这一行的“FORM ”字符以及跟在此字符后的所有字符 如
IMPORT TEMPLATE ENTITY TOOLPATH "Favourites\Offset-AreaClear-Model.ptf" FORM TOOLPATH
需要删除此行中的 FORM TOOLPATH
楼上Batcher兄的代码 sed -i -e "/^FORM/d" -e "s/FORM.*//g"  已经能完美的解决此问题
再次感谢Batcher兄

这一句可以成功更改所有文件,但不知道怎么把文件名改回来

for %%m in (*.mac) do (
sed -i -e "/^FORM/d" -e "s/FORM.*//g" %%m & ren sedDOSSUX new_%%m
)

[ 本帖最后由 CZT 于 2009-6-27 20:04 编辑 ]
作者: Batcher    时间: 2009-6-27 20:15     标题: 回复 4楼 的帖子

  1. @echo off
  2. for %%a in (*.mac) do (
  3.   sed -i -e "/^FORM/d" -e "s/FORM.*//g" "%%a"
  4. )
复制代码

作者: CZT    时间: 2009-6-27 20:31

原帖由 Batcher 于 2009-6-27 20:15 发表
@echo off
for %%a in (*.mac) do (
  sed -i -e "/^FORM/d" -e "s/FORM.*//g" "%%a"
)


就这么简单啊!
多谢
但上面的代码行不通啊!
它产生了很多这样名字的文件
sedDOSSUG
sedDOSSUH
sedDOSSUO
sedDOSSUP
sedDOSSUQ
sedDOSSUS

下面这个是我刚才想出来的
  1. @echo off
  2. for %%m in (*.mac) do (
  3. @sed -i -e "/^FORM/d" -e "s/FORM.*//g" %%m & ren sedDOSSUX xin%%m
  4. )
  5. md 更改后文件
  6. move xin*.mac 更改后文件>nul
  7. cd 更改后文件
  8. SetLocal ENABLEDELAYEDEXPANSION
  9. FOR /F "delims=" %%a in ('dir /b/a-d *.mac') do (
  10.    set var=%%a
  11.     set str=!var:xin=!
  12.     ren "!var!" "!str!"
  13. )
复制代码


但是这样的代码为什么会多出一个文件来呢

[ 本帖最后由 CZT 于 2009-6-27 20:40 编辑 ]
作者: Batcher    时间: 2009-6-27 22:40     标题: 回复 6楼 的帖子

你用的哪个版本的sed呢?是3楼提供的那个么?
作者: CZT    时间: 2009-7-10 21:27

原帖由 Batcher 于 2009-6-27 22:40 发表
你用的哪个版本的sed呢?是3楼提供的那个么?


多谢Batcher前辈
我以前用的确实不是三楼提供的那个
重新下载三楼的工具后
问题已成功解决
作者: jackerloo2009    时间: 2009-7-10 22:55

findstr /v /x /i /b "form.*" 1.txt

哎!没看下面那个,行后有的要去掉就有些麻烦了

[ 本帖最后由 jackerloo2009 于 2009-7-10 23:04 编辑 ]




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