如果不包含模式,请保留X行的行,然后删除其他行

时间:2017-10-11 09:36:48

标签: powershell

我正在尝试操作文本文件。我希望它保留前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

问题是线条仍然是空行。但它们应该被完全删除。

2 个答案:

答案 0 :(得分:1)

@Transactional

让它像那样工作。

答案 1 :(得分:0)

您可以使用

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