J'essaie de supprimer toutes les lignes d'un fichier texte qui contient une chaîne partielle à l'aide du code PowerShell ci-dessous:
Get-Content C:\new\temp_*.txt | Select-String -pattern "H|159" -notmatch | Out-File C:\new\newfile.txt
La chaîne réelle est H|159|28-05-2005|508|xxx
, il se répète plusieurs fois dans le fichier et j'essaie de ne faire correspondre que la première partie comme spécifié ci-dessus. Est-ce exact? Actuellement, je deviens vide en sortie.
Suis-je en train de manquer quelque chose?
Échapper à la | personnage utilisant un backtick
get-content c:\new\temp_*.txt | select-string -pattern 'H`|159' -notmatch | Out-File c:\new\newfile.txt
Supposons que vous souhaitiez écrire cela dans le même fichier, vous pouvez procéder comme suit:
Set-Content -Path "C:\temp\Newtext.txt" -Value (get-content -Path "c:\Temp\Newtext.txt" | Select-String -Pattern 'H\|159' -NotMatch)
Le caractère pipe |
a une signification particulière dans les expressions régulières. a|b
signifie "correspondre à a
ou b
". Si vous souhaitez faire correspondre un littéral |
caractère, vous devez y échapper:
... | Select-String -Pattern 'H\|159' -NotMatch | ...