0

我正在尝试制作一个脚本,该脚本首先在字符串之后搜索,然后在第一个字符串位置之后的行上开始搜索不同的字符串。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 等等等等。这可能吗?

4

2 回答 2

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
)
于 2013-07-19T21:54:15.097 回答
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
于 2013-07-19T20:58:21.750 回答