powershell搜索字符串,如果它位于文件中的两个位置

时间:2013-06-27 03:48:22

标签: regex powershell match

我的输入文件中有两行。

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

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

期望的输出:

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

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

1) string1 value 'string2' 
 2) CALL string1

即。 string1出现在'Value 'string2'之前 'string1'出现在'CALL'

之后 上面的

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

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

如果它出现在'Value 'String2''之前我可以存储“String1”,然后搜索'String1'的剩余记事本文件(如果它在模式CALL STRING1中则匹配) )

由于

1 个答案:

答案 0 :(得分: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 }