选择搜索的起始位置

时间:2013-07-19 17:04:58

标签: string batch-file find

我正在尝试创建一个首先在字符串后搜索然后在第一个字符串位置后开始搜索行上不同字符串的脚本。 String1只出现一次但是string2多次出现,而它唯一的string2出现在我需要的字符串之后。

澄清:

text text text
more text text
text text string2 <-- I don't whant this one
text text text
text text string1 <-- I whant this line
even more text
text string2 text <-- I whant this line
text text text
string2 text text<-- I don't whant this one

即使文件看起来不像这样,另一个订单,更多的string2等,它必须工作。 这可能吗?

2 个答案:

答案 0 :(得分:1)

我建议使用PowerShell。它会让事情更容易

$inputfile = 'C:\path\to\input.txt'

$m1 = Select-String string1 $inputfile
$m2 = Select-String string2 $inputfile `
        | ? { $_.LineNumber -gt $m1.LineNumber } `
        | select -First 1

$m1.Line
$m2.Line

答案 1 :(得分:1)

假设你的所有行都没有以:(可以使用额外代码修复该限制)

@echo off
setlocal
set "file=yourfile.txt"
for /f "tokens=1* delims=:" %%A in (type "%file%"^|'find "string1"') do (
  set /a start=%%A
  echo(%%B
  goto :getString2
)
:getString2
for /f "tokens=1* delims=:" %%A in ('type "%file%"^|find "string2"') do (
  if %%A gtr %start% echo(%%B
)