remove management left cortar powershell powershell-v2.0 powershell-v3.0

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)