2017-10-11 44 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