A scripted version for /filter looping through all lines:
Code:
; Input: $1 = name of input window $2 = ascii token separator used in input window
; $3 = <LlWw><position1>,<LlWw><position2>,etc $4- = token matchstring
; L (literal case sensitive) l (literal case insensitive) W (wildcard case sensitive) w (wildcard case insensitive)
; Output: $result = $null or name of results temp window with line format <original line position> <record>
alias SC_filterwin {
  var %w = $1, %a = $2, %list = $3, %wm = $4-
  var %total1 = $line(%w,0), %total2 = $numtok(%list,44), %i1 = 1, %wr = $SC_rw
  while (%i1 <= %total1) {
    var %rec = $line(%w,%i1), %i2 = 1
    while (%i2 <= %total2) {
      var %tok = $gettok(%list,%i2,44), %pos = $mid(%tok,2), %s1 = $gettok(%wm,%pos,%a), %s2 = $gettok(%rec,%pos,%a)
      goto $+(M,$asc($left(%tok,1)))
      :M76 | if (%s1 !== %s2) { goto nexti1 } | inc %i2 | continue
      :M108 | if (%s1 != %s2) { goto nexti1 } | inc %i2 | continue
      :M87 | if (%s1 !iswmcs %s2) { goto nexti1 } | inc %i2 | continue
      :M119 | if (%s1 !iswm %s2) { goto nexti1 } | inc %i2 | continue
    }
    aline -p %wr %i1 %rec
    :nexti1 | inc %i1
  }
  if ($line(%wr,0)) { return %wr } | window -c %wr | return
}

grin