-1

我的输入文件中有以下两行。

示例输入文件(文件名 - file.txt

String1   value   'string2'
..
..
..
Call  string1 

期望的输出:

File.txt. ( i.e. Name of file )

基本上我想要文件的名称 - 如果它包含这两行

1) string1 value 'string2' 
 2) CALL string1

iestring1 在之前'Value 'string2' ,'string1'在之后'CALL'

上面的 1) 和 2) 是两条不同的线,中间可能有很多线。

PS a) 我正在搜索 'string2' 。'string1' 可以是任意 8 个字符。我不知道'string1'

是否有某种方式可以存储'String1',如果它出现在它之前'Value 'String2'' ,然后搜索记事本文件的其余部分'String1'(如果它在模式中则匹配它CALL STRING1

谢谢

4

1 回答 1

1

像这样的东西可能会起作用:

$foundCall = $false
$string1 = $null

gc "C:\path\to\file.txt" | % {
  if ($_ -match "^(.{8}) value 'string2'") {
    $string1 = $matches[1]
  } elseif ($string1 -ne $null) {
    if ($_ -match "CALL $string1") { $foundCall = $true }
  }
}

if ($foundCall) { $file.Name }
于 2013-06-27T08:25:40.773 回答