2017-10-11 65 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 
相关问题