2017-10-11 18 views
0

テキストファイルを操作しようとしています。最初のX個の行を保持し、その後に文字列パターンを探す必要があります。行にパターンが含まれている場合は、それ以外の場合は削除する必要があります。行Xの行を保持し、パターンが含まれていない場合は他を削除します。

私は両方とも別々に作業するが、一緒に作業することはできません。 Xまで行を保持し、残りの行を削除するように機能します。パターンを持つ行を除くすべての行を削除するように動作しましたが、両方を同時に使用することはできません。

編集:ここでは、コードは次のとおりです。

$data = Get-Content test.md 
$newdata = "" 
$n = 0 
Foreach ($line in $data) { 
    if ($n++ -ge 6) { 
     $newdata += $line | Where{$_ -match '\[R\]'} 
    } else { 
     $newdata += $line 
    } 
    $newdata += " `r`n" 
} 
$newdata > test2.md 

問題は行が空行としてまだそこにあるあります。しかし、それらは完全に削除する必要があります。

答えて

1
$data = Get-Content test.md 
$newdata = "" 
$n = 0 
Foreach ($line in $data) { 
    if ($n++ -gt 6) { 
     if ($line -match '\[R\]') { 
      $newdata += $line + " `r`n" 
     } 
    } else { 
     $newdata += $line + " `r`n" 
    } 
} 
$newdata > test2.md 

そのように機能しました。

0

あなたは使用することができ

"test.md" | % { 
    Get-Content $_ -TotalCount 6 
    (Select-String -path $_ -match '\[R \]' -AllMatches).Line 
} | Out-File test2.md -Encoding Ascii 
関連する問題