7 votes

Correspondance des nouvelles lignes dans une expression régulière avec powershell

J'ai des données qui ressemblent à ceci :

:setvar DatabaseName "CI_1814903104"
:setvar DefaultFilePrefix "CI_1814903104"
--etc.    

GO

Je souhaite remplacer toutes les lignes de variables sql cmd (les lignes qui commencent par :setvar) par une chaîne vide de sorte que les données ressemblent à ceci :

--etc.    

GO

Cette déclaration (où $script contient les données) semble faire l'affaire mais laisse toujours les nouvelles lignes :

$script -replace ":setvar(.*$)", ""

résulte en :

 
 
--etc.    

GO

Comment inclure le saut de ligne dans la correspondance ? Il semble que la correspondance soit établie mais que le remplacement ne soit pas effectif. Toute aide est la bienvenue.

13voto

Hyper Anthony Points 3797

Cela suppose que vos données sont lues à partir d'un fichier. Selon la façon dont vous lisez vos données, vous pouvez avoir une collection de chaînes de caractères au lieu d'une seule chaîne.

PS C:\> $script = Get-Content data.txt

# Get-Content returns each line as a string object in an Object[].
PS C:\> $script.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array

PS C:\> $script[0].GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object

En faisant passer Get-Content à Out-String comme indiqué ci-dessous, vous obtiendrez une seule chaîne de caractères, et vous pourrez ensuite agir sur le caractère de nouvelle ligne de Windows pour supprimer les lignes appropriées.

PS <C:\> $script = ( Get-Content data.txt | Out-String ).Trim()
PS <C:\> $script -replace ":setvar(.*)`n", ""
--etc.

GO

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X