2017-02-17 14 views
0

У меня есть сценарий, который игнорирует некоторые блоки текста, но я просто не знаю, как заменить проигнорированный текст в исходную строку, чтобы она была удалена.

Я попытался создать вектор массива, но PowerShell делает странные вещи с передачей имуществом, например массив $ + = $ _ добавляет больше текста, чем он должен ...

помощи ценится, вот мой сценарий:

#$path = (Get-Item -Path ".\" -Verbose).FullName 
$path = split-path -parent $MyInvocation.MyCommand.Definition 
$files = Get-ChildItem "$path\test" -r # root path $PSScriptRoot 

#echo $path 
#echo $files 
#echo $files.Count 
ForEach ($file in $files){ 

    #echo "the value of i is" $i 
    #echo $file.FullName 
    #iterate through files from the current folder. 
    $data = Get-Content -Path $files.FullName 

    #echo "$data" 

    # parse DisabledFeatures.txt file as array of strings (1 string per line of the file) 
    $feature = Get-Content "$path\Disabled_Features.txt" 
    echo $feature.Count 

    #[System.Collections.ArrayList]$Modifier 
    $nl=[Environment]::NewLine 
    #iterate for each string entry in $feature array (read from txt file) 
    for($counter=0; $counter -lt $feature.Count; $counter++){ 
     #Start ignoring text after we've found the trigger 
     $parse = $feature[$counter] 
     #$Modifier.Clear() 
     $data | ForEach-Object -Begin { 
      $ignore = $false; $levels = 0 
     } -Process { 

      if($_ -match "^#ifdef $parse") { 
       $ignore = $true 
       #echo "start ignore" 

      }if($ignore) { #Track nested groups 
       if ($_ -match "^#ifdef") { 
        $levels++ 
        #echo "levels++" 
       }elseif ($_ -match "#endif") { 
        if($levels -ge 1) { 
         $levels-- 
         #echo "levels --" 
        }else { #If no nesting, we've hit the end of our targeted group. Stop ignoring 
         $ignore = $false 
         #echo "end ignore" 
        } 
       } 
      }else { #Append line 
       $temp=$_ 
       $Modifier+="$temp$nl" 
      } 
     } 
     echo $Modifier 
    } 
} 
+0

Этот вопрос немного неясен. Не могли бы вы предоставить образец ввода и желаемый результат? –

+0

Я уже нашел решение, написав $ data = $ data | ForEach-Object -Begin {....... , а затем перенаправление вывода как: $ data | output-file "path" – Jackson

+0

Затем ответьте на свой вопрос –

ответ

0

Я уже нашел решение, написав $ data = $ data | ForEach-Object -Begin {......., а затем перенаправление вывода как: $ data | output-file "path"