management - Usar PowerShell para eliminar líneas de un archivo de texto si contiene una cadena
powershell string management (3)
El personaje de la tubería |
tiene un significado especial en expresiones regulares. a|b
significa "coincide con a
o b
". Si quieres hacer coincidir un literal |
personaje, necesitas escapar de él:
... | Select-String -Pattern ''H/|159'' -NotMatch | ...
Estoy tratando de eliminar todas las líneas de un archivo de texto que contiene una cadena parcial utilizando el siguiente código de PowerShell:
Get-Content C:/new/temp_*.txt | Select-String -pattern "H|159" -notmatch | Out-File C:/new/newfile.txt
La cadena real es H|159|28-05-2005|508|xxx
, se repite en el archivo varias veces, y estoy tratando de hacer coincidir solo la primera parte como se especifica arriba. ¿Es eso correcto? Actualmente me estoy vaciando como salida.
¿Me estoy perdiendo de algo?
Escapar del | personaje usando un backtick
get-content c:/new/temp_*.txt | select-string -pattern ''H`|159'' -notmatch | Out-File c:/new/newfile.txt
Supongamos que desea escribir eso en el mismo archivo, puede hacer lo siguiente:
Set-Content -Path "C:/temp/Newtext.txt" -Value (get-content -Path "c:/Temp/Newtext.txt" | Select-String -Pattern ''H/|159'' -NotMatch)