2017-10-11 1 views
0

J'essaie de manipuler un fichier texte. Je veux qu'il garde les premiers X nombres de lignes et après cela il devrait chercher un motif de corde. Si une ligne contient le motif, elle doit être conservée sinon supprimée. J'ai eu les deux choses à travailler séparément mais pas ensemble. Cela fonctionne pour garder les lignes jusqu'à X et enlever le reste. Et je l'ai eu pour travailler pour enlever toutes les lignes sauf pour les lignes avec un motif, mais je ne peux pas le faire fonctionner pour les deux ensemble.Conserver les lignes de la ligne X puis supprimer les autres si elles ne contiennent pas de motif

EDIT: voici le code:

$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 

Le problème est que les lignes sont toujours là comme des lignes vides. Mais ils devraient être complètement supprimés.

Répondre

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 

l'a fait fonctionner comme ça.

0

Vous pouvez utiliser

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