2

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

sampleA1xxx sampleA2yyyy sampleA3zzzzz ... sampleA4hhhhh

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

那就是我的输出应该是:sampleA4hhhhh

谁能帮帮我。

4

4 回答 4

2
@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 限制。

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

于 2013-06-26T16:55:44.097 回答
2

拿一批或看看 GNUWin sed

>类型文件
^^sampleA1xxx ^^sampleA2yyyy ^^sampleA3zzzzz ^^sampleA4hhhhh

>sed -r "s/.*(\b\w+4\w+)/\1/" 文件
样本A4hhhhh

于 2013-06-26T10:38:09.583 回答
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%!
      )
   )
)
于 2013-06-26T11:00:42.127 回答
0

好的,我自己尝试了一个类似的案例,效果很好:

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

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

希望这有帮助,

你的莫娜。

于 2013-06-26T09:42:22.610 回答