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

[文本处理] [已解决]求删除重复字符串之后的批处理代码

有下面的文本,希望删除第5次出现“KRITISCHE DREHZAHL”字符串行之后的内容。并且删除一些不需要的行。
谢谢!

下面的代码只能删除最后一次出现之后的行。个人想着应该加一个计数,统计出现的次数,根据此删除。
  1. @echo off&Setlocal Enabledelayedexpansion
  2. for /f "tokens=1* delims=:" %%i in ('findstr /n "DREHZAHL" test.txt ') do (
  3.         set /a m=%%i
  4.         for /f "tokens=1* delims=:" %%a in ('findstr /n "."  test.txt') do (
  5.                 if %%a lss !m! (echo %%b)
  6.                 )
  7. )>new.txt
复制代码
KRIT.DREHZAHL:      2518.  7792. 10879. 16791. 19757.
  NR DELTAX   XI                            ETA
    0  .0000  .0000  -.243   .055   .010 -1.000 -1.000
    1  .0020  .0004  -.241   .058   .010  -.997  -.995
    2  .0200  .0046  -.221   .083   .011  -.963  -.947
    3  .0690  .0190  -.153   .170   .012  -.848  -.778
1                                                                                    删除此行   不一定是1
                                 -  13  -                                           删除此行   不一定是13

    4  .0560  .0306  -.098   .240   .014  -.755  -.642
    5  .0400  .0390  -.058   .290   .015  -.690  -.547
    6  .0560  .0506  -.003   .361   .016  -.602  -.418
    7  .0590  .0629   .055   .436   .018  -.522  -.297
    8  .1200  .0880   .173   .591   .021  -.404  -.108
    9  .0000  .0880   .173   .591   .021  -.404  -.108
   10  .1000  .1088   .279   .751   .025  -.383  -.026
   11  .1200  .1338   .382   .866   .028  -.363   .017
   12  .3300  .2026   .601   .972   .028  -.271   .058
   13  .1900  .2422   .688   .915   .025  -.196   .050
   14  .2528  .2949   .794   .807   .019  -.090   .034
   15  .0362  .3024   .809   .789   .019  -.075   .031
   16  .1990  .3439   .881   .673   .014   .008   .013
   17  .1950  .3845   .936   .528   .008   .078  -.006
   18  .1740  .4208   .971   .377   .003   .126  -.021
   19  .1740  .4571   .993   .212  -.002   .155  -.034
   20  .1667  .4918  1.000   .045  -.005   .163  -.041
   21  .1580  .5247   .996  -.113  -.008   .153  -.043
   22  .1410  .5541   .984  -.252  -.010   .131  -.041
   23  .1410  .5835   .963  -.385  -.011   .099  -.035
   24  .1410  .6129   .935  -.510  -.011   .057  -.025
   25  .1280  .6396   .903  -.614  -.010   .013  -.015
   26  .1280  .6663   .865  -.706  -.008  -.034  -.002
   27  .1280  .6929   .822  -.787  -.005  -.083   .011
   28  .1280  .7196   .773  -.856  -.001  -.131   .025
   29  .0289  .7256   .761  -.869   .000  -.141   .028
   30  .1264  .7520   .709  -.924   .005  -.186   .042
   31  .1100  .7749   .661  -.965   .009  -.223   .053
   32  .1100  .7978   .611  -.997   .015  -.257   .063
   33  .1000  .8187   .556 -1.000   .023  -.280   .071
   34  .1000  .8395   .490  -.970   .035  -.290   .075
   35  .1450  .8697   .381  -.882   .063  -.285   .076
   36  .1200  .8947   .277  -.764   .100  -.258   .071
   37  .1000  .9156   .170  -.605   .171  -.196   .056
   38  .0000  .9156   .170  -.605   .171  -.196   .056
   39  .1500  .9469   .020  -.425   .418  -.077   .026
   40  .0150  .9500   .005  -.408   .448  -.063   .023
   41  .1863  .9888  -.183  -.200   .873   .122  -.025
   42  .0537 1.0000  -.237  -.140  1.000   .176  -.039
  1. KRITISCHE DREHZAHL =    2698.6  (U/MIN)
1                                                                              删除此行  不一定是1
                                 -  14  -                                     删除此行  不一定是14

  2. KRITISCHE DREHZAHL =    8914.3  (U/MIN)
  3. KRITISCHE DREHZAHL =   12271.1  (U/MIN)
  4. KRITISCHE DREHZAHL =   19538.2  (U/MIN)
  5. KRITISCHE DREHZAHL =   21935.1  (U/MIN)            删除此行之后的内容
           E I G E N V E K T O R E N
KRIT.DREHZAHL:      2699.  8914. 12271. 19538. 21935.
  NR DELTAX   XI                            ETA
    0  .0000  .0000  -.407  -.573  -.043 -1.000 -1.000
    1  .0020  .0004  -.405  -.570  -.043  -.994  -.995
    2  .0200  .0046  -.382  -.533  -.040  -.934  -.945
    3  .0690  .0190  -.305  -.406  -.030  -.725  -.770
    4  .0560  .0306  -.242  -.303  -.022  -.556  -.629
    5  .0400  .0390  -.198  -.229  -.016  -.438  -.531
    6  .0560  .0506  -.135  -.127  -.009  -.276  -.400
    7  .0590  .0629  -.069  -.021  -.001  -.119  -.279
    8  .1200  .0880   .064   .189   .015   .151  -.103
    9  .0000  .0880   .064   .189   .015   .151  -.103
   10  .1000  .1088   .184   .383   .029   .335  -.054
   11  .1200  .1338   .300   .532   .039   .437  -.039
   12  .3300  .2026   .547   .719   .048   .460  -.028
   13  .1900  .2422   .646   .701   .043   .356  -.023
   14  .2528  .2949   .767   .646   .035   .192  -.016
   15  .0362  .3024   .783   .635   .033   .167  -.015
   16  .1990  .3439   .865   .558   .024   .023  -.008
   17  .1950  .3845   .927   .449   .013  -.110   .000
   18  .1740  .4208   .967   .328   .003  -.205   .006
1
                                 -  15  -
   19  .1740  .4571   .991   .191  -.007  -.268   .010
   20  .1667  .4918  1.000   .051  -.016  -.290   .013
   21  .1580  .5247   .996  -.083  -.023  -.277   .014
   22  .1410  .5541   .982  -.200  -.029  -.239   .013
   23  .1410  .5835   .959  -.312  -.033  -.180   .011
   24  .1410  .6129   .927  -.415  -.036  -.102   .007
   25  .1280  .6396   .891  -.498  -.037  -.021   .004
   26  .1280  .6663   .848  -.570  -.037   .067  -.001
   27  .1280  .6929   .799  -.629  -.036   .156  -.005
   28  .1280  .7196   .744  -.676  -.034   .241  -.010
   29  .0289  .7256   .731  -.684  -.033   .260  -.011
   30  .1264  .7520   .672  -.717  -.030   .336  -.015
   31  .1100  .7749   .617  -.737  -.027   .397  -.018
   32  .1100  .7978   .560  -.749  -.024   .451  -.021
   33  .1000  .8187   .498  -.730  -.021   .479  -.023
   34  .1000  .8395   .425  -.676  -.019   .478  -.023
   35  .1450  .8697   .302  -.546  -.023   .433  -.021
   36  .1200  .8947   .184  -.383  -.037   .353  -.018
   37  .1000  .9156   .063  -.155  -.093   .234  -.012
   38  .0000  .9156   .063  -.155  -.093   .234  -.012
   39  .1500  .9469  -.109   .234  -.353   .158  -.007
   40  .0150  .9500  -.126   .277  -.387   .153  -.007
   41  .1863  .9888  -.343   .836  -.859   .110  -.003
   42  .0537 1.0000  -.405  1.000 -1.000   .100  -.002
  1. KRITISCHE DREHZAHL =    2770.2  (U/MIN)
  2. KRITISCHE DREHZAHL =    9282.7  (U/MIN)
1
                                 -  16  -
  3. KRITISCHE DREHZAHL =   13136.2  (U/MIN)
  4. KRITISCHE DREHZAHL =   20498.6  (U/MIN)
  5. KRITISCHE DREHZAHL =   24555.0  (U/MIN)
           E I G E N V E K T O R E N




删除后的文件new.txt
KRIT.DREHZAHL:      2518.  7792. 10879. 16791. 19757.
  NR DELTAX   XI                            ETA
    0  .0000  .0000  -.243   .055   .010 -1.000 -1.000
    1  .0020  .0004  -.241   .058   .010  -.997  -.995
    2  .0200  .0046  -.221   .083   .011  -.963  -.947
    3  .0690  .0190  -.153   .170   .012  -.848  -.778
    4  .0560  .0306  -.098   .240   .014  -.755  -.642
    5  .0400  .0390  -.058   .290   .015  -.690  -.547
    6  .0560  .0506  -.003   .361   .016  -.602  -.418
    7  .0590  .0629   .055   .436   .018  -.522  -.297
    8  .1200  .0880   .173   .591   .021  -.404  -.108
    9  .0000  .0880   .173   .591   .021  -.404  -.108
   10  .1000  .1088   .279   .751   .025  -.383  -.026
   11  .1200  .1338   .382   .866   .028  -.363   .017
   12  .3300  .2026   .601   .972   .028  -.271   .058
   13  .1900  .2422   .688   .915   .025  -.196   .050
   14  .2528  .2949   .794   .807   .019  -.090   .034
   15  .0362  .3024   .809   .789   .019  -.075   .031
   16  .1990  .3439   .881   .673   .014   .008   .013
   17  .1950  .3845   .936   .528   .008   .078  -.006
   18  .1740  .4208   .971   .377   .003   .126  -.021
   19  .1740  .4571   .993   .212  -.002   .155  -.034
   20  .1667  .4918  1.000   .045  -.005   .163  -.041
   21  .1580  .5247   .996  -.113  -.008   .153  -.043
   22  .1410  .5541   .984  -.252  -.010   .131  -.041
   23  .1410  .5835   .963  -.385  -.011   .099  -.035
   24  .1410  .6129   .935  -.510  -.011   .057  -.025
   25  .1280  .6396   .903  -.614  -.010   .013  -.015
   26  .1280  .6663   .865  -.706  -.008  -.034  -.002
   27  .1280  .6929   .822  -.787  -.005  -.083   .011
   28  .1280  .7196   .773  -.856  -.001  -.131   .025
   29  .0289  .7256   .761  -.869   .000  -.141   .028
   30  .1264  .7520   .709  -.924   .005  -.186   .042
   31  .1100  .7749   .661  -.965   .009  -.223   .053
   32  .1100  .7978   .611  -.997   .015  -.257   .063
   33  .1000  .8187   .556 -1.000   .023  -.280   .071
   34  .1000  .8395   .490  -.970   .035  -.290   .075
   35  .1450  .8697   .381  -.882   .063  -.285   .076
   36  .1200  .8947   .277  -.764   .100  -.258   .071
   37  .1000  .9156   .170  -.605   .171  -.196   .056
   38  .0000  .9156   .170  -.605   .171  -.196   .056
   39  .1500  .9469   .020  -.425   .418  -.077   .026
   40  .0150  .9500   .005  -.408   .448  -.063   .023
   41  .1863  .9888  -.183  -.200   .873   .122  -.025
   42  .0537 1.0000  -.237  -.140  1.000   .176  -.039
  1. KRITISCHE DREHZAHL =    2698.6  (U/MIN)
  2. KRITISCHE DREHZAHL =    8914.3  (U/MIN)
  3. KRITISCHE DREHZAHL =   12271.1  (U/MIN)
  4. KRITISCHE DREHZAHL =   19538.2  (U/MIN)
  5. KRITISCHE DREHZAHL =   21935.1  (U/MIN)
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

你必须说明哪些规则的行要删除,而不是在图片上标注哪行要删
QQ 33892006

TOP

回复 2# yhcfsr

希望删除第5次出现“KRITISCHE DREHZAHL”字符串行之后的内容。

TOP

本帖最后由 yhcfsr 于 2019-1-25 23:22 编辑

回复 3# meiszp


    问题是第5次之前,你还有要删除的行,那以什么标准去判断是否要删除行?
最好把测试文件上传到网上.

将一个或多个要处理的文件拖入bat即可
  1. <# :将文件拖入bat执行
  2. @echo off&cd/d "%~dp0"
  3. set "batfile=%~0"&set "psfile=%~dpn0.ps1"
  4. :lp
  5. set "args=%args%"%~1" "
  6. shift
  7. if "%~1" neq "" goto :lp
  8. more +13 "%batfile%">"%psfile%"
  9. powershell -Nologo -NoProfile -Exec bypass -file "%psfile%" %args%
  10. del /f /q "%psfile%"
  11. pause&exit
  12. #>
  13. foreach($arg in $args)
  14. {
  15. $file=$arg;
  16. $count=0;
  17. [system.collections.arraylist] $result=@();
  18. $content=type $file -ReadCount 0;
  19. foreach($line in $content)
  20. {
  21. if(($line -match '^\d+\s*$') -or ($line -match '^\s+-  \d+  -\s*$')){continue;}
  22. if($line -match 'KRITISCHE DREHZAHL'){$count+=1}
  23. [void] $result.Add($line)
  24. if($count -ge 5){break;}
  25. }
  26. [io.file]::WriteAllLines($($file+'.log'),$result,[text.encoding]::default);
  27. }
复制代码
1

评分人数

QQ 33892006

TOP

建议到楼顶看下PS的用法。这样的东东用PS很方便的。
  1. # PS 方法
  2. $n, $A = @(), (gc test.txt);
  3. $A|%{if($_ -match 'KRITISCHE'){$n+=$A.indexof($_)}};
  4. $($A[0..$n[4]] -notmatch '^\d+|-\s+\d+')|sc Test.log;
  5. cmd /c pause
复制代码
纯 P
  1. @echo off & cd /d "%~dp0"
  2. setlocal enabledelayedexpansion
  3. (for /f "delims=" %%i in ('type test.txt') do (
  4. for /f "tokens=1-2* delims=. " %%a in ("%%i") do (
  5. if "%%b" equ "KRITISCHE" set /a n+=1
  6. if !n! lss 5 (
  7. if "%%b" neq "" if "%%a" neq "-" echo %%i
  8. ) else echo %%i & goto EXIT
  9. )
  10. ))>new.log
  11. :EXIT
  12. pause
复制代码
1

评分人数

TOP

返回列表