【问题标题】:to find a particular string alone using windows batch script使用 Windows 批处理脚本单独查找特定字符串
【发布时间】:2013-06-26 09:13:43
【问题描述】:

如果我的文件包含以下文本:

sampleA1xxx sampleA2yyyy sampleA3zzzzz ... sampleA4hhhhh

我想使用 windows 批处理脚本找到 sampleA4 并显示 sampleA4hhhh。

这是我的输出应该是:sampleA4hhhhh

谁能帮帮我。

【问题讨论】:

  • 据我所知,除非存在某种一致性,例如将所有样本分开的通用字母(包括空格),否则这是不可能的。请注意,如果每个案例都是“A[number]”,那么它可能是可能的,但是如果没有某种一致性,那么它就不是。
  • ^^sampleA1xxx ^^sampleA2yyyy ^^sampleA3zzzzz ^^sampleA4hhhhh 如果是这种情况,那么 ^^symbol 总是将每个实体分开......现在有可能......

标签: windows batch-file sed cmd findstr


【解决方案1】:

拿一批或看看 GNUWin sed:

>类型文件 ^^sampleA1xxx ^^sampleA2yyyy ^^sampleA3zzzzz ^^sampleA4hhhhh >sed -r "s/.*(\b\w+4\w+)/\1/" 文件 样本A4hhhhh

【讨论】:

    【解决方案2】:
    @echo off
    setlocal EnableDelayedExpansion
    set target=sampleA4
    set len=8
    for /F "delims=" %%a in ('findstr "%target%" theFile.txt') do (
       for %%b in (%%a) do (
          set word=%%b
          if "!word:~0,%len%!" equ "%target%" (
             echo !word:~%len%!
          )
       )
    )
    

    【讨论】:

      【解决方案3】:
      @ECHO OFF
      SETLOCAL
      FOR /f "delims=" %%i IN (q17316008.txt) DO SET line=%%i
      SET line=%line:^= %
      SET line=%line:*sampleA4=sampleA4%
      FOR %%i IN (%line:^^= %) DO SET line=%%i&GOTO :done
      :done
      ECHO %line%
      
      GOTO :EOF
      

      这应该做我收集到的任务。它假定"samplea4" 字符串存在于文件的单行中,不区分大小写,并且该行不超过~8K 行长度限制。

      只需将插入符号替换为空格,将前导字符删除到目标字符串的第一次出现,并将该目标字符串作为列表处理;第一个元素将是所需的字符串,因此在可用时停止处理。

      【讨论】:

        【解决方案4】:

        好的,我自己尝试过类似的情况,效果很好:

        for /f "tokens=4 delims=^^" %%a in (seperate.txt) do (echo %%a)
        pause
        

        注意:这是为批处理文件设计的,请将“tokens=”后面的 4 替换为您要停止的任何分隔文本。

        希望这有帮助,

        你的莫娜。

        【讨论】:

        • 它对我不起作用。 :(...其实我需要找到一个关键字xxyyzzzz11.20.2,得到11.20.2的版本..
        • 您是否将“seperate.txt”替换为您的文件名?
        • hmm... 没完全看懂,但是如果你能在文件中找到另一个一致性,把=^^替换成=[whatever separates each instance]
        猜你喜欢
        • 2014-02-15
        • 1970-01-01
        • 1970-01-01
        • 2013-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多